如何在正则表达式中验证手机号码

时间:2015-09-21 09:55:13

标签: regex validation

我正在尝试使用正则表达式验证移动设备

所以我试过了     https://regex101.com/#javascript

My Expresion是((\d[^0-5]|[6-9])\d{9})|^(\d)\1*$

我需要验证下面的移动电话号码

  

1.不应该以0-5开头

     

例如0600432102

     

2.不完全相同或按顺序

     

例如1111111111或0123456789或9876543210

     

3.lenght是10位

我犯了错误。

帮助我....

谢谢......

4 个答案:

答案 0 :(得分:1)

这涵盖所有标准并测试一些数字。但它没有指明数字无效的原因 - 我把它留给你。

var numArr = ["1111111111", "0123456789", "9876543210", "8682375827", "83255"];

for (var i = 0; i < numArr.length; i++) {
    console.log(numArr[i] + " is " + validate(numArr[i]));
}

function validate(num) {
    if ((num.match(/^[6-9]\d{9}$/) && (!num.match(/^([0-9])\1{9}$/))) && (!isIncr(num) && (!isDecr(num)))) {
        return ( "Valid") ;
    } else {
        return ( "Not valid") ;
    }
}

function isIncr(num) {
    for (var i = 1; i < num.length; i++) {
        if (num[i] == parseInt(num[i - 1]) + 1) {
            continue;
        } else {
            return false;
        }
    }
    return true;
}

function isDecr(num) {
    for (var i = 1; i < num.length; i++) {
        if (num[i] == parseInt(num[i - 1]) - 1) {
            continue;
        } else {
            return false;
        }
    }
    return true;
}

答案 1 :(得分:1)

(([6-9])(?!\2{9})\d{9})

意愿:

  1. 检查号码是否以6-9开头。它将其存储在匹配组2中。
  2. 检查第一个数字后面是否正好9(您可以在此处设置限制)重复相同的数字。
  3. 继续查找第一个数字后是否还有9个数字。
  4. 不会:

    1. 检查数字是否为升序/降序。
    2. 检查6566666666
    3. 等模式

答案 2 :(得分:1)

您可以使用以下正则表达式:

 /^(?!9876543210)(?!([\d])\1{9})[6-9][\d]{9}$/mg

解释

(?!9876543210)检查字符串是否不同(它是唯一可能的序列)

(?!([\ d])\ 1 {9})检查这是不是重复的相同数字

[6-9] [\ d] {9} 检查号码是以6到9开头,然后是9个号码

答案 3 :(得分:0)

此正则表达式适用于不以0-5开头的重复和数字。

(?!([0-9])\1{9})(\b[6-9]\d{9})

在此处查看演示:https://regex101.com/r/uJ0vD4/9

它不会检测升序和降序数字。您可以使用程序中的循环

来实现