我有两个正则表达式,一个用于美国护照,另一个用于英国护照。
UK : (?<!\B)(?:\d{9})(?!\B)
US : (?<!\B)(?=(?:[0][0-9]|1[0-5])|15|17|20|21|22|30|31|40|50|53)\d{9}(?!\B)
这些是给我的,似乎在他们自己的例子上工作得很好..
问题在于以这种格式输入美国银行路由号码
Routing:121181976
并在系统中运行匹配,路由号码被识别为美国/英国护照以及银行路由号码(具有另一个,不相关的正则表达式)。
Passport正则表达式正在拾取9位数的路由号码,尽管有前面的文字。
如何更改Passport正则表达式,以便忽略文本附加到字符串的输入。 我假设^插入符号在其中有一些作用,创建条件,匹配必须首先从数字本身开始。
尝试在各种正则表达式测试网站中创建正则表达式以及查阅正则表达式书籍。
答案 0 :(得分:1)
是..您必须使用开始^
和结束$
锚点..这将仅检查输入中的模式..忽略是否找到任何文本:
UK : ^(?:\d{9})$
US : ^(?=(?:[0][0-9]|1[0-5])|15|17|20|21|22|30|31|40|50|53)\d{9}$