繁体   English   中英

创建仅在输入开头匹配数字的Java正则表达式

[英]Creating a Java regular expression that will match on numbers at beginning of the input only

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

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正则表达式,以便它们不理会带有附加在字符串上的文本的输入。 我假设^插入符号在其中起作用,从而创建了这样的条件,即匹配必须首先从数字本身开始。

一直试图在各种正则表达式测试站点中创建正则表达式,并尝试查阅正则表达式书籍。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM