【问题标题】:using a C# regexp in javascript在 javascript 中使用 C# 正则表达式
【发布时间】:2017-05-01 11:09:48
【问题描述】:

我有这个 C# 语言的正则表达式

 public static bool IsValidId(string Id)
        {
            return Regex.IsMatch(Id, @"^([A-Za-z0-9]|[+|\?|/|\-|:|\(|\)|\.|,||]){1,35}$");
        }

我很困惑如何在 JavaScript 中使用这个正则表达式!,因为 c# 版本使用 @ 来避免转义字符,并且因为我想在 JavaScript es5 中使用它并且我不知道任何等效的构造,所以我很困惑关于我应该在 JavaScript 中转义的字符!

正确吗? /^([A-Za-z0-9]|[+|\?|/|\-|:|\(|\)|\.|,||]){1,35}$/

【问题讨论】:

  • 字符类中不需要|/^([A-Za-z0-9]|[+?/:().,|]-){1,35}$/。请记住将- 放在字符类的末尾。
  • 为什么要避免转义字符?只需在每个 \ 前面加上另一个反斜杠来逃避它。喜欢^([A-Za-z0-9]|[+|\\?|/|\\-|:|\\(|\\)|\\.|,||]){1,35}$
  • 请贴出所有相关的c#代码。
  • @WiktorStribiżew 我添加了我拥有的所有 c# 代码。
  • 您可以使用/^[A-Za-z0-9+?\/:().,|-]{1,35}$/.test(Id)

标签: javascript c# regex


【解决方案1】:

你有一个像这样的正则表达式模式:

^([A-Za-z0-9]|[+|\?|/|\-|:|\(|\)|\.|,||]){1,35}$

它基本上匹配一个字母数字符号(带有[A-Za-z0-9])或(|)一些特殊字符(来自[+|\?|/|\-|:|\(|\)|\.|,||] 集合)1 到35 次(因为使用了{1,35} 限制量词),并且整个字符串应与此模式匹配(如 ^ - 字符串开头 - 和 $ - 字符串结尾 - 使用锚点)。

模式可以写成更线性的方式,只需合并2个字符类以去除交替组,并将限制量词设置为字符类并将连字符放在末尾,以免不得不转义:

^[A-Za-z0-9+?/:().,|-]{1,35}$

现在,在 JS 正则表达式中使用此模式的最佳方法是在正则表达式文字中使用它(其中 / 必须转义,因为它是正则表达式分隔符):

/^[A-Za-z0-9+?\/:().,|-]{1,35}$/

由于您在 C# 中使用Regex.IsMatch(),因此您只对布尔值感兴趣,如果字符串与正则表达式匹配。在 JS 中,使用RegExp#test()

var rx = /^[A-Za-z0-9+?\/:().,|-]{1,35}$/;
var s = "Some-string01:more|here";
var result = rx.test(s);
console.log("Result:", result);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多