我在 javascript 中有这个实现:
EscapeForRegex = function(input) {
var specials = ["[", "\\", "^", "$", ".", "|", "?", "*", "+", "(", ")", "{", "}"]
for (var k in specials) {
var special = specials[k];
input = input.replace(new window.RegExp("\\" + special, "g"), "\\" + special);
}
return input;
};
然而,当我将我的实现与位于 http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.escape.aspx 的页面进行比较时,我发现了 2 个差异。
我已经包括了 ] 但页面没有这样做。我们真的不需要包含 ] 吗? (显然我并不怀疑那个页面,但因为我的实现是用 javascript 而不是 c#/vb..)
我错过了 #。 # 符号在 javascript 正则表达式中是特殊的吗?
最佳答案
1) I've included ] but the page doesn't do so. is it true that we do not have to include the ] ? (apparently I'm not doubting that page, but since my implementation is in javascript and not c#/vb..)
]
只需要在字符集中进行转义。该列表还缺少 -
,有时需要在字符集中转义。例如,要创建包含字符空格、破折号和字母 A 的字符集,您需要将 -
转义为:/[\-A]/
或将破折号移到一边:/[- A]/
。
在上面列出的字符中,只有 ]
、-
、^
和 \\
需要在字符集中进行转义。 ^
只有在字符集内且在开头的情况下才需要在字符集内进行转义。
如果你想在文字形式中包含正则表达式文本,/.../
而不是 new RegExp("...")
你还需要转义行终止字符:代码点 U+000A、U+000D、U+2028、U+2029 和字符集外的 /
字符。
2) I've missed out #. is the # symbol special in javascript regex?
不,#
在 JavaScript 中并不特殊。
关于c# - 正则表达式 : .net 与 javascript 中特殊字符的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5923976/