JS Regex的字符串包含固定数量的字母

时间:2018-06-11 06:50:06

标签: javascript regex

假设我需要在字符串中至少包含5个字母,而不要求它们是后续字母。下面的正则表达式检查后续字母

[A-Za-z]{5,}

所以,“aaaaa” - true ,但“aaa1aa” - false

保留序列条件的正则表达式是什么,上面字符串的两者都会传递为真。

5 个答案:

答案 0 :(得分:4)

您可以删除所有带有.replace(/[^A-Za-z]+/g, '')的非字母字符,然后运行正则表达式:



var strs = ["aaaaa", "aaa1aa"];
var val_rx = /[a-zA-Z]{5,}/;
for (var s of strs) { 
  console.log( val_rx.test(s.replace(/[^A-Za-z]+/g, '')) );
}




否则,您也可以使用像

这样的一步解决方案



var strs = ["aaaaa", "aaa1aa"];
var val_rx = /(?:[^a-zA-Z]*[a-zA-Z]){5,}/;
for (var s of strs) { 
  console.log( s, "=>", val_rx.test(s) );
}




second regex demo online(?:[^a-zA-Z]*[a-zA-Z]){5,}匹配5个或更多连续出现的0个或更多非字母字符([^a-zA-Z]*),后跟字母字符。

答案 1 :(得分:1)

在字母之间允许使用非字母字符:

(?:[A-Za-z][^A-Za-z]*){5,}

答案 2 :(得分:1)

如果你只需要使用正则表达式,这里有一个有点丑陋的选择:

const check = str => /^(.*[A-Za-z].*){5}/.test(str);
console.log(check("aaaaa"));
console.log(check("aa1aaa"));
console.log(check("aa1aa"));

答案 3 :(得分:1)

w表示正则表达式中的字母数字, 没关系:\ w {5,}

答案 4 :(得分:0)

[a-zA-Z0-9]{5,}

就像这样?或者你的意思是它需要是一个忽略数字的正则表达式?因为上面的内容也会匹配aaaa1