前言:
前一段时间,对如下一段特殊符号进行测试,js中有一段代码如下:
[`~!@#$^&*()=|{};:'".,[\]./?~@#&*{}]
结果发现不能匹配\,于是没有多想,便将代码修正为
[`~!@#$^&*()=|{};:'".,[\\]./?~@#&*{}]
结果发现,js运行这段代码时出错!!!
----------------------------------------------------------
原因:
这里的符号这段代码根本没有要对 " \ ” 进行匹配,
所看到的"[\]",是对后面的 " ] " 进行匹配
下面是正则表达式中的两个规则,可以解释这个问题。
①[…] 匹配括号中任意字符
②“\”+实际字符 \ . * + ? | ( ) { }^ $ 例如:\\匹配字符“\”
因为不能把中间出现的 ” ] ” 理解为解释,所以要在前面加上 转义,使其作为一个符号
-------------------------------------------------------------------------------------
总结
1.注意JS中的转义字符,因为js中不会像java一样,你不用转义时会报错。
例:
如果出现这样
[`~!@#$^&*()=|{};:'".,[\\]./?~@#&*{}]
或者这样
[`~!@#$^&*()=|{};:'".,[]./?~@#&*{}]
的问题,会使整段js失效!!
2.确定出现的\是否是对后面字符的转义!!!