手机号码的正则表达式包含至少3个唯一数字

时间:2018-05-03 13:26:46

标签: javascript regex mobile

我需要一个正则表达式来检查字符串上的以下条件: -

1)它只包含数字(0-9) 2)字符串必须包含三个唯一的数字 3)字符串中必须没有空格 4)字符串的长度必须为10。

有效的字符串示例 “1234567890” “1122557890” “7878787808”

无效字符串: - “7878787878” “1111122222”

1 个答案:

答案 0 :(得分:0)

您可能会做的是匹配从结尾^开始直到结束$的10位^[0-9]{10}$,如果成功则匹配test

如果是这种情况,您只能从字符串中获取唯一值,如果该计数等于或大于3,则表示您匹配。

有多种方法可以从数组中删除重复值。对于此示例,我使用了方法from this page



let strings = [
  "1234567890",
  "1122557890",
  "7878787808",
  "7878787878",
  "1111122222"
];
let pattern = /^[0-9]{10}$/;

strings.forEach((s) => {
  if (pattern.test(s)) {
    let a = s.split("").filter(function(x, i, a) {
      return a.indexOf(x) === i;
    });
    if (a.length >= 3) {
      console.log("Valid: " + s);
    }
  }
});