在JavaScript中使用正则表达式完全匹配字符串

时间:2014-02-06 16:59:29

标签: javascript regex

我想在JavaScript中验证字符串以允许字母数字,“(”,“)”和空格。所以测试字符串是:

s1 = "This $h00l*&^ not w0rk342*_(&, <and> always fail" 
s2 = "This should work (ABC1234)"

我的代码:

var regX = new RegExp(/A-Za-z0-9\\(\\)\\x20+/);
if(!regX.test(s1)){
    alert("InValid value.");
}

但是两个字符串都失败了。

同样,test()函数评估字符串中的匹配而不是整个字符串 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test

有人可以帮忙。提前致谢

1 个答案:

答案 0 :(得分:3)

你应该使用这个正则表达式:

/^[A-Za-z0-9() ]*$/

如果您不想允许空字符串,请将*替换为+

^$分别测试字符串的开头和结尾。

*表示重复0次或更多次。 +表示重复一次或多次。

要指定字符类(即一组字符),您需要将字符放在[]内。


进一步缩短正则表达式:

/^[a-z\d() ]*$/i

i标志会使正则表达式匹配不区分大小写,这样就无需指定A-Z

\d是数字0-9的速记字符类。速记字符类也可以包含在字符类中。