使用javascript new regexp对象包含一组包含匹配字符的括号

时间:2013-09-17 19:32:27

标签: javascript regex

所以看起来我遇到了一个奇怪的问题,并且想知道某人是否有解决方案,或者我在javascript中滥用了RegExp对象。我写下了一个regexp,它检查特定值是否为字母数字。功能和一些样本测试用例如下

var re = new RegExp("^[a-zA-z\\d]+$");

document.writeln(re.test("a")); 
document.writeln(re.test("a1234")); 
document.writeln(re.test("12345a"));
document.writeln(re.test("12345"));
document.writeln(re.test("a["));
document.writeln(re.test("[]"));
document.writeln(re.test("]"));

在所有情况下,它返回true。我尝试转义常规exp中的括号,即var re = new RegExp("^\\[a-zA-z\\d\\]+$");,但随后每个测试用例都返回false。

我通过使用正则表达式文字来修复此问题,而不是var re = /^[a-zA-Z\d]+$/;。我想我可以使用\w,但该字段不应包含_字符。

有人知道如何解决问题,或者RegExp对象是否与一组匹配的字符不兼容?

提前致谢!

1 个答案:

答案 0 :(得分:7)

第二个'z'应为'Z'。 Z(0x5a)和a(0x61)之间的ascii范围包括方括号,插入符号,反引号和下划线。