我在扫描特殊字符“[”时遇到困难。环顾四周后,我试过了:
var regEx = new RegExp(someValue + "[\x5B]"); // "5B" is the hex-value for "["
(我想要区分大小写,我只想要第一次出现,所以我故意不添加任何修饰符。)
我一直在寻找,我仍然不知道我做错了什么。如果这是一个愚蠢的问题,我很抱歉,但我是JavaScript的新手,而且我还在学习所有的细节。
答案 0 :(得分:3)
function escapeRegExp(str) {
return str.replace(/[-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
var re = new RegExp(escapeRegExp(str));
答案 1 :(得分:1)
如果你只是逃避角色,应该没问题:
new RegExp(someValue + "\\[");
你需要两个反斜杠,因为反斜杠也是字符串的转义字符。因此\\[
会产生字符串\[
,这就是我们所需要的。
答案 2 :(得分:1)
var regEx = new RegExp(someValue + "\\[");
你只需要用反斜杠来逃避它。反斜杠是双倍的,因为它也是一个javascript特殊字符。
答案 3 :(得分:0)
正则表达式.\[
和.[\x5B]
都匹配文本中的子字符串"e["
:
"some[text"
你可以看到自己:
var text = "some[text";
print(text.match(/.\[/));
var text = "some[text";
print(text.match(/.[\x5B]/));
答案 4 :(得分:-2)