日期:2014-05-16  浏览次数:20418 次

JAVASCRIPT正则表达式太奇怪了
JScript code

var a = /^[a-zA-Z]\w{5,17}$/i;
alert(a.test("abncdfe"));
//结果是 true
var b = "^[a-zA-Z]\w{5,17}$";
alert(new RegExp(b,"i").test("abncdfe"));
//这个结果却是 false



看代码。有人遇到过吗?

------解决方案--------------------
转义字符的问题

HTML code
<script>
var a = /^[a-zA-Z]\w{5,17}$/i;
alert(a.test("abncdfe"));
//结果是 true
var b = "^[a-zA-Z]\\w{5,17}$";
alert(new RegExp(b,"i").test("abncdfe"));

</script>

------解决方案--------------------
楼上正解

第二种方式里,\w 在转义字符里没有意义,最终系统中存储的时候会把 \w 重新置为 w,因此用它来创建的正则与原有方式不一致。