仅验证单词最简单的正则表达式是(我认为)
/^\w+$/
我想从中排除数字_(因为它aa10aa现在接受和 aa_aa,我想拒绝它们)
我认为它可以通过
/^[a-zA-z]+$/
这意味着我必须采取不同于前一种方法的方法。
但是如果我想从这个范围中排除任何字符,假设我不允许k, K, p,P或更多怎么办。
有没有办法在不改变范围的情况下在范围内添加排除列表。?
仅验证单词最简单的正则表达式是(我认为)
/^\w+$/
我想从中排除数字_(因为它aa10aa现在接受和 aa_aa,我想拒绝它们)
我认为它可以通过
/^[a-zA-z]+$/
这意味着我必须采取不同于前一种方法的方法。
但是如果我想从这个范围中排除任何字符,假设我不允许k, K, p,P或更多怎么办。
有没有办法在不改变范围的情况下在范围内添加排除列表。?
要排除k或p从[a-zA-Z]您需要使用否定前瞻断言。
(?![kpKP])[a-zA-Z]+
必要时使用锚点。
^(?:(?![kpKP])[a-zA-Z])+$
它检查不是k或p每个字符匹配之前。
或者
^(?!.*[kpKP])[a-zA-Z]+$
它只是排除其中包含线k或p与只匹配那些只包含字母以外的其他线路k或p。
^(?!.*(?:p|k))[a-zA-Z]+$
这应该可以做到。参见演示。否定前瞻将断言匹配的单词也没有p或k.Usei修饰符。
https://regex101.com/r/vD5iH9/31
var re = /^(?!.*(?:p|k))[a-zA-Z]+$/gmi;
var str = 'One\nTwo\n\nFour\nFourp\nFourk';
var m;
while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}