以下
JavaScript不输出任何内容(甚至不是“false”),并确实阻止页面上的任何其他JavaScript运行:
var pattern = new RegExp(/[_-%]/); document.write(pattern.test("foo"));
这个正则表达式是做什么的?如果删除了三个字符(_,– 或%)中的任何一个,则一切正常.如果三个字符的顺序完全改变,一切正常.
解决方法
[]块中的连字符用于范围.所以_ to%无效.
你可以逃脱它:
你可以逃脱它:
var pattern = new RegExp(/[_\-%]/);
或者开始:
var pattern = new RegExp(/[-_%]/);
或者到最后:
var pattern = new RegExp(/[_%-]/);
由于正则表达式在开始时知道连字符(或者结束,感谢BrunoLM!)意味着字面连字符而不是范围.