我想:普通电话号码表达
\d{3}|\d{11}|\d{11}-\d{1}
匹配三位数字,十位数,十位数,接着一个连字符,然后是一个数字。 但是,它只匹配三位数字!
我也试过\d{3}|\d{11}|\d{11}-\d{1}
但不起作用。
任何想法?
我想:普通电话号码表达
\d{3}|\d{11}|\d{11}-\d{1}
匹配三位数字,十位数,十位数,接着一个连字符,然后是一个数字。 但是,它只匹配三位数字!
我也试过\d{3}|\d{11}|\d{11}-\d{1}
但不起作用。
任何想法?
如果交替的第一部分匹配,则正则表达式引擎甚至不会尝试第二部分。
假设您只想与匹配三位11位或11位连字符1位数字,则可以使用周转来确保前后字符不是数字。
(?<!\d)(\d{3}|\d{11}|\d{11}-\d{1})(?!\d)
有标点电话号码的许多方式。你为什么不移除所有数字,然后检查长度?
注意,有指示 “扩展” 的几种方法:
+1 212 555 1212 ext.35
\ d {7} + \ d {4}将选择一个11位数字。我无法让\ d {11}实际工作。
这应该工作:/(?:^|(?<=\D))(\d{3}|\d{11}|\d{11}-\d{1})(?:$|(?=\D))/
或组合/(?:^|(?<!\d))(\d{3}|\d{11}(?:-\d{1})?)(?:$|(?![\d-]))/
扩展:
/ (?:^ | (?<!\d)) # either start of string or not a digit before us
( # capture grp 1
\d{3} # a 3 digit number
| # or
\d{11} # a 11 digit number
(?:-\d{1})? # optional '-' pluss 1 digit number
) # end capture grp 1
(?:$ | (?![\d-])) # either end of string or not a digit nor '-' after us
/
有使用正则表达式匹配电话号码,许多主题:http://stackoverflow.com/search?q =正则表达式+手机+号码 – 2011-02-01 21:50:21
我也试过\ d {3} | \ d {11}( - \ d {1})*,但不起作用。 – 2011-02-01 21:51:35
哪个国家/地区的电话号码? – 2011-02-01 22:34:32