正则表达式为"移动电话号码的所有数字不应相同"

时间:2016-10-20 11:29:21

标签: javascript html css angularjs regex

编辑:我是正则表达式的新手。我需要一个10位移动号码的正则表达式,该号码不应该以0或1开头,并且所有10位数都不能重复相同的号码。 对不起,缺乏信息。请帮助解决这个问题。

请找到HTML代码。

  <div class="col-md-2">
                                    <label>Mobile Phone</label>
                                    <input id="" type="text" ui-mask="(999) 999-9999" name="mobilePhone"
                                           class="form-control"
                                           ng-model="patientIn.addressList[0].phoneNumbers['mobile']"
                                           ng-change="setPhoneNumber('mobile')"
                                           ui-mask-placeholder-char="space"
                                           model-view-value="true"/>
                                    <p ng-show="(frmPatientEdit.$submitted && frmPatientEdit.mobilePhone.$invalid) || (frmPatientEdit.mobilePhone.$invalid && frmPatientEdit.mobilePhone.$touched)"
                                       class="error">Mobile Phone is Invalid.</p>

4 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式检查所有数字是否相同。

(\d)是一个捕获组,\1匹配捕获组{9}匹配\1 9次,您可以编辑该数字以适应。所以这会告诉你十个数字是否相同。

(\d)\1{9}

JS

text.match(/(\d)\1{9}/g);

http://regexr.com/3efqd

答案 1 :(得分:1)

在您的情况下,手机号码的格式为(9999)999-9999 因此,正则表达式应该是

/\((\d)\1{3}\) \1{3}-\1{4}/.test("(9999) 999-9999")
"true"

/\((\d)\1{3}\) \1{3}-\1{4}/.test("(9999) 929-9999")
"false"

这里,正则表达式的分解说明是

\( - &gt;匹配(在你的字符串中

(\d) - &gt;匹配第一个整数并捕获它(以便我们以后可以反向引用它)

\1 - &gt;选择第一个捕获的元素

{3} - &gt;检查捕获是否重复3次

(space) - &gt;空间

\1{3} - &gt;检查捕获是否重复3次(反向引用)

- - &gt;检查hiphen

\1{4} - &gt;检查捕获是否重复4次

答案 2 :(得分:0)

public class regex {
public static void main(String[] args)
{
    String regex1 = "(\\d)\\1{9}";
    String regex2 = "[\\d]{10}";
    Scanner ssc = new Scanner(System.in);
    System.out.println("enter string:");
    String input = ssc.next();
    System.out.println(input.matches(regex2)&&(!input.matches(regex1)));

}
}

答案 3 :(得分:0)

如果您使用诸如分隔符(-)之类的任何格式,则可以按以下方式使用

^([2-9])(\d{2})-(\d{3})-(\d{4})(?<!(\1{3}-\1{3}-\1{4}))$

这将只允许第一位数字在[2-9]范围内,并允许电话号码采用格式 234-234-2345

这还将检查是否通过拨出号码使用了相同的号码。

代码分解:

**1st Capturing Group ([2-9])**
         Match a single character present in the list below [2-9]
         2-9 a single character in the range between 2 (index 50) and 9 (index 57) (case sensitive)
**2nd Capturing Group (\d{2})**
        \d{2} matches a digit (equal to [0-9])
        {2} Quantifier — Matches exactly 2 times
 **-** 
        matches the character - literally (case sensitive)
**3rd Capturing Group (\d{3})**
        \d{3} matches a digit (equal to [0-9])
        {3} Quantifier — Matches exactly 3 times
**-** 
        matches the character - literally (case sensitive)
**4th Capturing Group (\d{4})**
       \d{4} matches a digit (equal to [0-9])
       {4} Quantifier — Matches exactly 4 times
**Negative Lookbehind (?<!(\1{3}-\1{3}-\1{4}))**
          Assert that the Regex below does not match
**5th Capturing Group (\1{3}-\1{3}-\1{4})**
          This group matches with character in first group at positions where 
          our format number will have digits.. i.e., it matches if same 
          number is repeated in all positions 
   
**$**
         asserts position at the end of the string