正则表达式中特殊字符的差异:.NET vs JavaScript
differences of special characters in regex: .net vs javascript
我在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)我已经包含了],但页面没有这样做。我们真的不必包括 ] 吗?(显然我不怀疑那个页面,但是因为我的实现是用javascript而不是c#/vb。
]
只需在字符集中进行转义。 该列表也缺少有时需要在字符集中转义-
。 例如,要创建包含字符空格、破折号和字母 A 的字符集,您需要转义-
:/[ '-A]/
或将破折号移到一侧:/[- A]/
。
在上面列出的字符中,只有 ]
、-
、^
和 ''
需要在字符集中进行转义。 ^
只有在字符集中和开头时,才需要在字符集内进行转义。
如果要在文字形式中包含正则表达式文本,/.../
而不是new RegExp("...")
还需要转义行终止符字符:代码点 U+000A、U+000D、U+2028、U+2029 和字符集外部的/
字符。
2)我错过了#。# 符号在 JavaScript 正则表达式中很特殊吗?
不,#
在 JavaScript 中并不特别。
仅供参考,您的函数可以简化为:
function EscapeForRegex(input){
return input.replace(/[(-.]|[$?[']''^|{}]/g, '''$&');
}
它不包括#
,并且确实包括]
和-
,正如迈克塞缪尔所指出的。
- setInteval vs setTimeout
- 借助asp.net验证或java脚本对多个文本进行验证
- java.net和javascript之间正则表达式的差异
- $(this).prop('property') vs. this.property
- 将Javascript数组发送到控制器ASP.NET MVC
- ASP.NET通过单击JavaScript按钮触发c#事件
- 将数据从javascript文件导入VB.Net页面
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- 在vs.net 2010中调试JavaScript代码
- JavaScript 禁用 = 真 vs ASP.NET 启用 = 假
- 重定向到 URL - asp.net vs MVC
- JScript.NET vs ECMA
- Json序列化器vs .net序列化类的JQuery AJAX结果数据
- Javascript vs c#在ASP中动态更改元素类/id.Net 4.5 mvc
- 数据库调用vs传递属性在ASP.. NET AJAX Web服务
- ASP.Net MVC VS Javascript UI
- 我需要帮助使用VS-2013在服务器上部署我的asp.net网站
- 正则表达式中特殊字符的差异:.NET vs JavaScript
- 将jsFiddle迁移到asp.net VS IDE时的问题:表数据网格未加载
- ASP.NET Web Api vs Node.js