[a-z-[dfiquv] # a character class that contains:
# the character range a-z
# -
# [
# the (duplicate) letters: dfiquv
] # followed by a literal ]
关于原始图案的另一个注意事项:XRegExp不支持非捕获组语法中的inline修饰符:(?i:......)(that is a shortcut for(?:(?i)......), note that javascript doesn't support(?i)too, it doesn't support inline modifiers at all)。由于所有模式似乎都不区分大小写,最好的方法是将所有模式的修饰符如下所示:/... pattern .../i并删除不需要的非捕获组。
3条答案
按热度按时间oknrviil1#
你的模式相当于这样:
由于这个原因,原始模式在JavaScript中不起作用:
XRegExp(JavaScript正则表达式引擎)不支持字符类减法。因此,
[a-z-[dfiquv]]
将被视为:关于原始图案的另一个注意事项:XRegExp不支持非捕获组语法中的inline修饰符:
(?i:......)
(that is a shortcut for
(?:(?i)......), note that javascript doesn't support
(?i)too, it doesn't support inline modifiers at all)
。由于所有模式似乎都不区分大小写,最好的方法是将所有模式的修饰符如下所示:/... pattern .../i
并删除不需要的非捕获组。elcex8rz2#
这与JS兼容的正则表达式相当接近,只是做了一些小的修改,试试这个:
voase2hg3#
我需要大规模验证英国国民保险号码,偶然发现了这篇文章。然而,我发现使用正则表达式进行验证真的很慢。所以我创建了这个npm包,它不使用regex,速度大约快14倍:test-nino .只是想我会分享,以防其他人需要更高性能的解决方案。