c# - 正则表达式 : .net 与 javascript 中特殊字符的差异

标签 c# javascript .net regex vb.net

我在 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 个差异。

  1. 我已经包括了 ] 但页面没有这样做。我们真的不需要包含 ] 吗? (显然我并不怀疑那个页面,但因为我的实现是用 javascript 而不是 c#/vb..)

  2. 我错过了 #。 # 符号在 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/

相关文章:

c# - WCF reference.cs 突然不包括类

javascript - RSpec、 capybara 、bootbox.js、Rails-3.2。 :selenium driver 的奇怪行为

c# - 是否可以在 C# 中扩展 'using' block ?

c# - 我可以更好地优化这个并发吗?

c# - 如何将面向数据类型的 DataTemplate 与 GridView 一起使用?

c# - C# 随机数生成器线程安全吗?

c# - 是否存在链式 NULL 检查之类的东西?

javascript - 如何导入 moment.js?

javascript - 将 paperjs 与 jsfiddle 一起使用

c# - (C#) 访问/修改列表中的对象