在javascript

时间:2017-05-01 11:09:49

标签: javascript c# regex

我在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}$/

1 个答案:

答案 0 :(得分:2)

你有这样的正则表达式:

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

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

模式可以用更线性的方式编写,只需合并2个字符类来删除交替组,并将限制量词设置为字符类,并将连字符放在末尾,以免不得不逃避它:

$

现在,在JS正则表达式中使用此模式的最佳方法是在正则表达式文字中使用它(其中^[A-Za-z0-9+?/:().,|-]{1,35}$ 必须被转义,因为它是正则表达式分隔符符号):

/

由于在C#中使用/^[A-Za-z0-9+?\/:().,|-]{1,35}$/ ,如果字符串与正则表达式匹配,则只对布尔值感兴趣。在JS中,使用RegExp#test()

Regex.IsMatch()