2013-07-16 99 views
2

我在JQuery中有以下正则表达式。它总是返回true。正则表达式总是返回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,^ & & &^&” 应该是假的,它返回true。

+1

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

回答

4

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

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

谢谢Shyam。有任何方案匹配失败吗?我认为它实际上也一样? – TBA

+1

这里'^'和'$'很重要,这意味着整个字符串必须与表达式匹配。 '“ABCD,^ &&& ^&''有一些匹配正则表达式的字符,所以它们会被返回。如果输入没有例如。 like'“^ &&& ^&''match'将返回'null',这会使布尔测试失败 – shyam

+0

谢谢Shyam :) – TBA

2

你的正则表达式应该是:

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

+0

谢谢我错过了$! – TBA

+1

另外我用比赛而不是测试@ shyam说:) – TBA