簡體   English   中英

正則表達式電話號碼驗證,使用空格和最小位數的字符

[英]Regular-Expression Phone number validation with spaces and characters with minimun digits

我對正則表達式的技能較少,但我有一個快速的問題。 我需要使用regEx驗證電話號碼輸入。

解釋/表達將不勝感激。 電話號碼可以是以下任何一種格式:

(94) 123 345
(94).456.7899
(94)-456-7899
94-456-7899
+94 456 7899
94 456 7899
0094 456 7899
(94) 123
122 3454
1223454

1)數字可以包含空格和字符,也可以不包含字符。
2)至少5位數字,沒有空格和字符。 (我在這里停留)

第一次嘗試

export const basicPhoneNumber = value =>
value && !/^\+?\d+$/i.test(value) 
? 'Invalid phone number' 
: undefined;

第二次嘗試

  export const basicPhoneNumber = value =>
  value && !/\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4,})/i.test(value) 
  ? 'Invalid phone number' 
  : undefined;

非常感謝您的所有幫助,祝您一切順利!

使用正則表達式進行電話號碼驗證非常復雜,尤其是在這種情況下,但是我們可以嘗試使用類似於以下的表達式:

^\+?\(?([0-9]{2,4})[)\s.-]+([0-9]{3,4})([\s.-]+([0-9]{3,4}))?$

無論某些輸入(例如(000)000-0000)不是真正的電話號碼,都可能因未列出的某些所需實例而失敗。

 const regex = /^\\+?\\(?([0-9]{2,4})[)\\s.-]+([0-9]{3,4})([\\s.-]+([0-9]{3,4}))?$/gmi; const str = `(94) 123 345 (94).456.7899 (94)-456-7899 94-456-7899 +94 456 7899 94 456 7899 0094 456 7899 (94) 123 122 3454`; let m; while ((m = regex.exec(str)) !== null) { // This is necessary to avoid infinite loops with zero-width matches if (m.index === regex.lastIndex) { regex.lastIndex++; } // The result can be accessed through the `m`-variable. m.forEach((match, groupIndex) => { console.log(`Found match, group ${groupIndex}: ${match}`); }); } 

演示1

編輯

為了允許12234554 ,我們將為([)\\s.-]+)?創建一個可選組([)\\s.-]+)?

^\+?\(?([0-9]{2,4})([)\s.-]+)?([0-9]{3,4})([\s.-]+([0-9]{3,4}))?$

演示2

如果您需要做的只是按照列出的標准驗證電話號碼,則可以考慮先剝離所有非數字字符,然后使用RegExp進行測試。

這不僅容易得多,而且也容易理解。

 // Sample data const numbers = [ '(94) 123 345', '(94).456.7899', '(94)-456-7899', '94-456-7899', '+94 456 7899', '94 456 7899', '0094 456 7899', '(94) 123', '122 3454' ] // The validation function const validate = value => { value = value.replace(/\\D|(^0+)/g, ''); return /^\\d{5,}$/.test(value); } // Tests numbers.forEach(function(phone){ console.log(validate(phone), `"${phone}"`); }); 

RegExp說明:

/\\D|(^0+)/g

  1. \\D匹配所有非數字字符。
  2. (^0+)當至少有1個開頭的0個字符時匹配。

/^\\d{5,}$/

當字符串以數字開頭和結尾以及字符串包含至少5個數字且沒有任何非數字時,匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM