javascript - 如何将 JavaScript 正则表达式转换为 C# 正则表达式?

标签 javascript c#

假设我们在 Javascript 中有以下正则表达式代码行:

.replace(/[\*\+\-=~><\"\?^\${}\(\)\:\!\/[\]\\\s]/g, '\\$&') // replace single character special characters

.replace(/\|\|/g, '\\||') // replace ||

.replace(/\&\&/g, '\\&&') // replace &&

.replace(/AND/g, '\\A\\N\\D') // replace AND

.replace(/OR/g, '\\O\\R') // replace OR

.replace(/NOT/g, '\\N\\O\\T'); // replace NOT

我正在尝试将这些正则表达式代码行转换为以下 C# 正则表达式:

 public static String ReturnSanitizedString(string query)
    {
        String pattern1 = @"[\*\+\-=~><\""\?^\${ }\(\)\:\!\/[\]\\\s]"; // Replace the single character special characters. 
        String pattern2 = @"\|\|";
        String pattern3 = @"\&\&";
        String pattern4 = @"AND";
        String pattern5 = @"OR";
        String pattern6 = @"NOT";

        String replacement1 = "\\$&";
        String replacement2 = "\\||";
        String replacement3 = "\\&&";
        String replacement4 = "\\A\\N\\D";
        String replacement5 = "\\O\\R";
        String replacement6 = "\\N\\O\\T";

        Regex rgx = new Regex(pattern1);
        string result1 = rgx.Replace(query, replacement1);

        Regex rgx2 = new Regex(pattern2);
        string result2 = rgx2.Replace(result1, replacement2);

        Regex rgx3 = new Regex(pattern3);
        string result3 = rgx3.Replace(result2, replacement3);

        Regex rgx4 = new Regex(pattern4);
        string result4 = rgx4.Replace(result3, replacement4);

        Regex rgx5 = new Regex(pattern5);
        string result5 = rgx5.Replace(result4, replacement5);

        Regex rgx6 = new Regex(pattern6);
        string finalResult = rgx6.Replace(result5, replacement6);

        return finalResult;
    }

以下句子(这是查询):

"AND there! are? (lots of) char*cters 2 ^escape!"

执行上面的代码后应该转换成这句话:

\A\N\D\ there\!\ are\?\ \(lots\ of\)\ char\*cters\ 2\ \^escape\!

我无法让它工作,我在上面的方法中做错了什么。

最佳答案

pattern3 中,您有正则表达式 \&\&| ,它基本上匹配所有内容。 只需像这样删除最后一个管道即可得到您想要的:

String pattern3 = @"\&\&";

关于javascript - 如何将 JavaScript 正则表达式转换为 C# 正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42902443/

相关文章:

javascript - 在 jQuery 中分割 URL 路径并获取其中的一部分

c# - 复制内存中的 SQLite 数据库,使单元测试更快

c# - IQueryable 不在 SQL 中附加 WHERE 语句

c# - 在 C# 中将子类型列表作为父类(super class)型列表返回

javascript - 根据鼠标的位置更改图像位置 我怎样才能让它在 ie 中工作?

javascript - 多行 ReCharts

javascript - iOS Safari 忽略 javascript 中的溢出隐藏代码

javascript - 无法在禁用和启用状态下断言双操作按钮

c# - Visual Studio 2012 - 如何自动打开关闭花括号?

c# - 如何通过SqlConnection获取最后执行的SQL查询?