我必须匹配一组不以“3400”开头且必须完全为13位的数字。
到目前为止,这就是我所拥有的:
^(?:(?!3400).)*$
这使得它与一组不以“3400”开头的字符匹配;但是我如何施加13位数的限制?
答案 0 :(得分:2)
^(?:(?!3400).)*$
模式匹配一个字符串,该字符串由除了换行符之外的任何字符组成,0 +出现,不包含3400
子字符串。
您所寻求的是匹配仅由13位数组成的字符串,而不是以某些自定义数字序列开头。
使用
^(?!3400])\d{13}$
匹配不以3400
开头的13位数字符串。
您可以进一步自定义图案,例如同时避免使用
匹配以3400
和3401
开头的数字字符串
^(?!340[01])\d{13}$
^^^^
其中[01]
是与0
或1
匹配的字符类。 ^(?!3400|3401)\d{13}$
也是可能的,但最佳做法是,替代品不应在同一位置匹配(此处,它们都匹配340
),这会影响性能,尤其是更长的模式和更多替代方案。