Regular Expression for finding phone numbers
Possible Duplicates:
A comprehensive regex for phone number validation
grep with regex for phone number
大家好,
我是Stackoverflow的新手,我有一个简单的问题。 让我们假设我们获得了大量的HTML文件(理论上无限大)。 如何使用正则表达式从所有这些文件中提取电话号码列表?
解释/表达将非常感激。 电话号码可以是以下任何格式:
- (123)456 7899
- (123).456.7899
- (123)-456-7899
- 123-456-7899
- 123 456 7899
- 1234567899
非常感谢您的帮助并拥有一个好的帮助!
应该完成你想要做的事情。
第一部分
我在那里的
希望有所帮助!
在不知道您正在使用什么语言的情况下,我不确定语法是否正确。
这应该与您的所有组匹配,误报率很低:
1 | /\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/ |
匹配后您将感兴趣的组是组1,3和4.组2仅用于确保第一个和第二个分隔符
例如,用于剥离字符并在123456789中保留电话号码的sed命令:
1 | sed"s/(\{0,1\}\([0-9]\{3\}\))\{0,1\}\([ .-]\{0,1\}\)\([0-9]\{3\}\)\2\([0-9]\{4\}\)/\1\3\4/" |
以下是我表达的误报:
- (123)456789
- (123456789
- (123 456 789
- (123.456.789
- (123-456-789
- 123)456789
- 123)456 789
- 123).456.789
- 123)-456-789
将表达式分为两部分,一部分与括号匹配,另一部分不匹配将消除所有这些误报,除了第一部分:
1 | /\(([0-9]{3})\)([ .-]?)([0-9]{3})\2([0-9]{4})|([0-9]{3})([ .-]?)([0-9]{3})\5([0-9]{4})/ |
在这种情况下,第1,3和4组或第5,7和8组都很重要。
除最后一个模式外,这应匹配所有模式。
对于最后一个,您可以使用分离的模式
并且有一个错误,它将匹配
与2相同
由于您要从HTML页面中提取,您必须忽略
你可以在这里测试Regex
这将帮助您捕获括号中区号的那些
1 | ([0-9]\{3\})[ .-][0-9]\{3\}[ .-][0-9]\{4\} |
其他人是:
1 2 | [0-9]\{3\}[ -][0-9]\{3\}[ -][0-9]\{4\} [0-9]\{10\} |
我将第一个和第二个分开,因为将它们放在一起而不回溯可能会让你接受
另请注意,在我的终端上使用