创建一个Java正则表达式,该表达式仅匹配输入开头的数字

时间:2015-06-10 20:41:21

标签: java regex

我有两个正则表达式,一个用于美国护照,另一个用于英国护照。

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正则表达式,以便忽略文本附加到字符串的输入。 我假设^插入符号在其中有一些作用,创建条件,匹配必须首先从数字本身开始。

尝试在各种正则表达式测试网站中创建正则表达式以及查阅正则表达式书籍。

1 个答案:

答案 0 :(得分:1)

是..您必须使用开始^和结束$锚点..这将仅检查输入中的模式..忽略是否找到任何文本:

UK : ^(?:\d{9})$
US : ^(?=(?:[0][0-9]|1[0-5])|15|17|20|21|22|30|31|40|50|53)\d{9}$