Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式中特殊字符的差异:.net与javascript_C#_Javascript_.net_Regex_Vb.net - Fatal编程技术网

C# 正则表达式中特殊字符的差异:.net与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

我用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;
    };
然而,当我将我的实现与上的页面进行比较时,我发现了两个差异

  • 我已经包括了],但页面没有这样做。我们是否真的不必包含]?(显然,我并不怀疑这个页面,但因为我的实现是用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, '\\$&');
    }
    
    它不包括Mike Samuel指出的
    #
    ,而是包括
    ]
    -

    请参见“