我想:普通電話號碼錶達
\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