只验证单词最简单的正则表达式(我认为)
/^\w+$/
Run Code Online (Sandbox Code Playgroud)
我想排除数字并_从中排除(因为它aa10aa现在接受和aa_aa,我想拒绝它们)
我认为它可以通过
/^[a-zA-z]+$/
Run Code Online (Sandbox Code Playgroud)
这意味着我必须采取不同于前一种方法的方法.
但如果我想排除在此范围内的任何字符想我不会允许k,K,p,P或者更多.
有没有办法在范围内添加排除列表而不更改范围.?
Avi*_*Raj 15
要排除k或p从[a-zA-Z]你需要使用负前向断言.
(?![kpKP])[a-zA-Z]+
Run Code Online (Sandbox Code Playgroud)
必要时使用锚.
^(?:(?![kpKP])[a-zA-Z])+$
Run Code Online (Sandbox Code Playgroud)
它检查不是k或p每个字符匹配之前.
要么
^(?!.*[kpKP])[a-zA-Z]+$
Run Code Online (Sandbox Code Playgroud)
它只是排除其中包含线k或p与只匹配那些只包含字母以外的其他线路k或p.
^(?!.*(?:p|k))[a-zA-Z]+$
Run Code Online (Sandbox Code Playgroud)
这应该可以做到。参见演示。否定前瞻将断言匹配的单词也没有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.
}
Run Code Online (Sandbox Code Playgroud)