[英]regex to validate phone number
幫我寫以下條件的正則表達式
以上應滿足以下示例
0-1234-123456
+91-1234-56789012
+91-1234-56789012 x1234
+91-1234-56789012 ex1234
+91-1234-56789012 ext12345
+91-1234-56789012x1234
+91-1234-56789012ex1234
+91-1234-56789012ext12345
91-1234-56789012
91-1234-56789012 x1234
91-1234-56789012 ex1234
91-1234-56789012 ext12345
91-1234-56789012x1234
91-1234-56789012ex1234
91-1234-56789012ext12345
91123456789012
91123456789012 x1234
91123456789012 ex1234
91123456789012 ext12345
91123456789012x1234
91123456789012ex1234
91123456789012ext12345
91.1234.56789012
91.1234.56789012 x1234
91.1234.56789012 ex1234
91.12345.6789012 ext12345
91.12345.6789012x1234
91.12345.6789012ex1234
91.12345.6789012ext12345
1-234-567-8901
1-234-567-8901 x1234
1-234-567-8901 ext1234
1 234 567-8901
1.234.567.8901
12345678901
我發現在線鏈接很少,其中之一是http://ericholmes.ca/php-phone-number-validation-revisited/
並且在stackoverflow上
也
^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$
不適用於上述多種情況
^\+?(\d[.\- ]*){9,14}(e?xt?\d{1,5})?$
說明;
^
斷言字符串的開始 \\+?
匹配可選的加號 (\\d[.\\- ]*){9,14}
介於9到14個數字之間,可能由空格,點或破折號分隔。 (e?xt?\\d{1,5})?
可選地,ax可能以e開頭或以t開頭。 字母后面總是1到5個數字。 $
字符串結尾 可以做到這一點,但要取決於您使用的是哪種編程語言(我們始終需要使用正則表達式知道這一點,因此,如果這對您不起作用,請使用所使用的語言進行回復。我已經在PHP5中對其進行了測試。)
您的條件5(電話號碼中最多14個字符)似乎是錯誤的,因為如果您的幾個示例包含點或連字符,則它們包含16個字符。 無論如何,這不會檢查整個物件的總長度,因為它會檢查另一個長度。 它需要第二個正則表達式,或者更好的是,事先檢查字符串長度(例如,在PHP中通過調用strlen)。
您可能需要在分機號中留一個空格,例如ext 1234;。 如果是這樣,請在適當的位置添加\\ s *。
我希望這有幫助。
^\+?\d[\d-\.\s]{8,15}\s?((ext|ex|x)\d{3,5})?$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.