JavaScript RegExp [^..]没有达到预期结果的表达

JavaScript RegExp [^...] expression not giving intended result

本文关键字:结果 RegExp JavaScript      更新时间:2023-09-26

我的代码如下:

function isValid(passCode){
   var myRegExp=/[^a-z'd]/i;
   return !(myRegExp.test(passCode));
}
if (isValid(prompt("Enter passcode:",""))){
   alert("Access granted");
}else{
   alert("Denied");
}

根据我的理解,例如,如果我将abc作为参数传递给isValid()函数,myRegExp.test应该返回true,因此isValid()应该返回false(因为使用了!运算符)。但是该函数返回true。为什么?

这里是JSFiddle: https://jsfiddle.net/k7d4va5k/#&togetherjs=GCP5bmgPP4

使用"字符类",也称为"字符集",您可以告诉正则表达式引擎只匹配几个字符中的一个。只需将要匹配的字符放在方括号中。

/[a-z'd]/ 

这将匹配字母和数字

在开始方括号后输入插入符号(^)将取消字符类。结果是字符类匹配不在字符类中的任何字符。因此

/[^a-z'd]/.test('abc') will be false
/^[a-z'd]/.test('abc') will be true

因为在后一种情况下,插入符号表示一行的开始,这意味着如果在字符类之外使用插入符号,它表示行开始,而不是否定字符类。