【问题标题】:Regular Expression always returns true正则表达式总是返回 true
【发布时间】:2013-07-16 06:15:12
【问题描述】:

我在 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。

【问题讨论】:

  • “我在 JQuery 中有以下正则表达式” jQuery 与正则表达式完全无关。 jQuery 是一个函数库。 JavaScript 是一种语言,其中包括正则表达式。

标签: javascript jquery regex


【解决方案1】:

match 返回在字符串中找到的匹配项。你真正想要的是test 例如。像这样

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

【讨论】:

  • 谢谢希亚姆。是否有任何场景匹配失败?我认为它实际上是一样的?
  • ^$ 在这里很重要,这意味着整个字符串必须与表达式匹配。 "ABCD, ^&&&^&" 有一些与正则表达式匹配的字符,因此它们将被返回。如果输入没有,例如。像 "^&&&^&" match 将返回 null 这将失败布尔测试
【解决方案2】:

你的正则表达式应该是:

var reg = new RegExp('^[a-zA-Z0-9 ,]+$');

【讨论】:

  • 谢谢我错过了美元!!
  • 正如@shyam 所说,我使用的是 Match 而不是 test :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-31
  • 2011-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
相关资源
最近更新 更多