正则表达式总是返回true。

5

我在JQuery中有以下的正则表达式,它总是返回true。

var reg = new RegExp("[a-zA-Z0-9 ,]+");
var key = $('#keyId').val().trim();
if (key.match(reg)) {
  $("#TitleError").hide();
}
else {
  $("#TitleError").text("special characters not allowed!!").show();

}

它对所有内容都返回true,例如"ABCD, ^&&&^&"应该为false,但实际上却返回了true。


2
我有以下 JQuery 正则表达式: jQuery 绝对与正则表达式无关。jQuery 是一组函数库。JavaScript 是一种具有正则表达式的语言,除其他外。 - T.J. Crowder
2个回答

6

match函数返回字符串中发现的所有匹配项,但是实际上你需要用test函数来进行匹配,例如:

/^[a-zA-Z0-9 ,]+$/.test(key)
or 
reg.test(key)

谢谢Shyam。有没有任何情况匹配失败?我认为它实际上是一样的? - TBA
1
这里的 ^$ 很重要,它们意味着整个字符串必须与表达式匹配。 "ABCD, ^&&&^&" 中有一些字符与正则表达式匹配,因此它们将被返回。如果输入没有任何匹配项,例如 "^&&&^&"match 将返回 null,这将导致布尔测试失败。 - shyam

3
您的正则表达式应该是: var reg = new RegExp('^[a-zA-Z0-9 ,]+$'); 它能匹配字母、数字、逗号和空格。

谢谢,我错过了 $!! - TBA
1
我之前使用了Match而不是test,正如@shyam所说的那样 :) - TBA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接