Javascript正则表达式有20个字符,连续超过n个数字

时间:2017-08-22 22:28:22

标签: javascript regex

我试图将两个正则表达式放在一起并且没有想到它。

我已经得到以下内容仅匹配字母数字

^([a-zA-Z0-9_-]){1,20}$

并且我已经得到以下内容以匹配连续超过7个数字的任何字符串

^\d{8,20}$

如何将两者放在一起以仅允许20个字母数字字符,连续超过7个数字

1 个答案:

答案 0 :(得分:1)

您可以使用

/^(?=.*\d{8})[\w-]{1,20}$/

请参阅regex demo

<强>详情

  • ^ - 字符串开头
  • (?=.*\d{8}) - 除了换行符之外的任何0 +字符后,必须有8个连续的数字
  • [\w-]{1,20} - 1到20个字符(字母,数字或_)或连字符
  • $ - 字符串结束。

JS演示:

var ss = ["Text_with_1234567", "Text_with_12345678"];
var rx = /^(?=.*\d{8})[\w-]{1,20}$/;
for (var s of ss) {
 console.log(s,"=>",rx.test(s));
}

注:

  • 如果您想确保这些8个或更多数字出现在字符串的开头,请删除前瞻中的.*
  • 如果您想确保数字位于最后,请使用(?=.*\d{8}$)