C# 正则表达式中特殊字符的差异:.net与javascript
我用javascript实现了以下功能:C# 正则表达式中特殊字符的差异:.net与javascript,c#,javascript,.net,regex,vb.net,C#,Javascript,.net,Regex,Vb.net,我用javascript实现了以下功能: EscapeForRegex = function(input) { var specials = ["[", "\\", "^", "$", ".", "|", "?", "*", "+", "(", ")", "{", "}"] for (var k in specials) { var special = specials[k]; input = input.repla
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;
};
然而,当我将我的实现与上的页面进行比较时,我发现了两个差异
]
只需在字符集中转义。该列表也缺少-
,有时需要在字符集中转义。例如,要创建包含空格、破折号和字母a的字符集,您需要转义-
,因此:/[\-a]/
或将破折号移到一边:/[-a]/
在上面列出的字符中,只有]
、-
、^
和\
需要在字符集中转义^
仅当字符集在字符集中且在开头时,才需要在字符集中转义
如果要在文本表单中包含正则表达式文本,/…/
而不是new RegExp(“…”)
,则还需要转义行终止符字符:代码点U+000A、U+000D、U+2028、U+2029,以及字符集之外的/
字符
2) 我错过了。#符号在javascript正则表达式中是特殊的吗
不,
#
在JavaScript中并不特殊。仅供参考,您的函数可以简化为:
function EscapeForRegex(input){
return input.replace(/[(-.]|[$?[\]\\^|{}]/g, '\\$&');
}
它不包括Mike Samuel指出的#
,而是包括]
和-
。请参见“