我在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}$/
答案 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()