为什么正则表达式/ [_-%] /打破JavaScript?

前端之家收集整理的这篇文章主要介绍了为什么正则表达式/ [_-%] /打破JavaScript?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
以下 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!)意味着字面连字符而不是范围.

猜你在找的正则表达式相关文章