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

问题描述 投票:1回答:1

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

我有以下内容只匹配字母数字

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

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

^\d{8,20}$

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

javascript regex
1个回答
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}$)
© www.soinside.com 2019 - 2024. All rights reserved.