0

所以看起来我遇到了一个奇怪的问题,想知道是否有人有解决方案,或者我是否在 javascript 中滥用了 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 对象与一组匹配字符不兼容吗?

提前致谢!

4

1 回答 1

7

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

于 2013-09-17T19:34:04.403 回答