簡體   English   中英

手機號碼的正則表達式,在某些條件下驗證電話號碼

[英]Regex for mobile number, phone number validation with some conditions

我想在正則表達式中驗證手機號碼和電話號碼。 所以正則表達式應該通過以下所有規則

  1. 必須至少有 5 個數字。

  2. +,(),-,# 等特殊字符只能使用一次

  3. 開括號和閉括號應該相互存在,即,如果使用開括號,則必須強制關閉

  4. 最大數量應為 20。

所以為了做到這一點,我添加了這段代碼。

//validate phone
function validatePhone( phone ) {
    var regex = /^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$/i;
    return regex.test( phone );
}

但它並沒有驗證所有條件。

更新它應該接受所有這些電話號碼

(+355)250235
+91 123456789012
(+355) 250-236-236-789
(+355) 2502-3656-1236-8789
+920123456789012345987
(+355) 250235 #10

您可以斷言至少 5 位而不是 21 位。

然后匹配帶或不帶括號的部分,並可選擇匹配末尾帶有# 的部分。

^(?=(?:[^\n\d]*\d){5})(?!(?:[^\n\d]*\d){21})(?:\(\+?\d+\)|\+?\d+) ?\d+(?:-\d+)*(?: ?#\d+)?$

正則表達式演示

首先,使用以下內容刪除空格和 - (連字符)

 var temp =str.replace(/([\s\-])/g, ''); 

然后使用下面的 reg ex 測試它

^((\(){1}(\+?\d{3}(\)){1})|(\+)?\d{3})(\d){2,17}$

嘗試使用下面的 function

function validate (str){

 var temp =str.replace(/([\s\-])/g, '');  
  var patt = /^((\(){1}(\+?\d{3}(\)){1})|(\+)?\d{3})(\d){2,17}$/g;
  var result = patt.test(temp);
}

檢查這個

在此處輸入圖像描述

暫無
暫無

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

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