[英]regular expression us phone number
我有一個與以下數字匹配的正則表達式。
8702431273
973-882-9444轉6114
1-223-332-2232
但它不匹配。
(+1)623-975-5296
605-367-7321
如何修改它以接受這些。
^(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})(?:(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$
在我看來,你可以在開頭簡單地替換這部分:
^(?:1(?:[. -])?)?
有了這個:
^(?:\(?\+?1\)?(?:[. -])?)?
或者,如果您想嚴格匹配括號:
^(?:(?:\((?=.?1\)))?\+?1\)?(?:[. -])?)?
我會將下一部分合並到你的正則表達式以匹配其他電話:
(?:\(\+\d\)\s)
它表示帶數字的加號。 如果括號內可以有更多數字或者后面有更多空格,請調整它。 最終的正則表達式可能是這樣的。
^(?:(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?|(?:\(\+\d\)\s))?([2-9]\d{2})(?:^(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$
我將我改變的部分划分為適應新的電話號碼:
^
(?:
(?:1(?:[. -])?)?
(?:\((?=\d{3}\)))?
|
(?:\(\+\d\)\s)
)?
([2-9]\d{2})(?:^(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$
在我的測試中,它適用於您帖子的五部電話。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.