我试图将两个正则表达式放在一起并且没有想到它。
我有以下内容只匹配字母数字
^([a-zA-Z0-9_-]){1,20}$
我已经得到以下内容来匹配连续超过7个数字的任何字符串
^\d{8,20}$
如何将两者放在一起以仅允许20个字母数字字符,连续超过7个数字
你可以用
/^(?=.*\d{8})[\w-]{1,20}$/
细节
^
- 字符串的开头(?=.*\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));
}
注意:
.*
(?=.*\d{8}$)
。