首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >验证不完整的正则表达式

验证不完整的正则表达式
EN

Stack Overflow用户
提问于 2013-03-25 20:07:11
回答 1查看 91关注 0票数 1

假设我们有一个Regex,在我的例子中,它是我找到的一个与英国汽车牌照匹配的:

代码语言:javascript
运行
复制
^([A-Z]{3}\s?(\d{3}|\d{2}|d{1})\s?[A-Z])|([A-Z]\s?(\d{3}|\d{2}|\d{1})\s?[A-Z]{3})|(([A-HK-PRSVWY][A-HJ-PR-Y])\s?([0][2-9]|[1-9][0-9])\s?[A-HJ-PR-Z]{3})

典型的英国汽车注册号是

代码语言:javascript
运行
复制
HG53CAY

正则表达式正确地匹配了它,但我想要做的是找到一种方法来匹配它的任何前缀子字符串,因此以下所有内容都是有效的:

代码语言:javascript
运行
复制
H, HG, HG5, HG53, HG53C, HG53CA, HG53CAY

有没有建议的方法来实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-25 20:25:24

首先,我将重写您的regexp,使其如下所示:

代码语言:javascript
运行
复制
^([A-Z]{3}\s?(\d{1,3})\s?[A-Z])|([A-Z]\s?(\d{1,3})\s?[A-Z]{3})|(([A-HK-PRSVWY][A-HJ-PR-Y])\s?([0][2-9]|[1-9][0-9])\s?[A-HJ-PR-Z]{3})

因为\d{3}|\d{2}|d{1}部分没有任何意义,应该用\d{1,3}编写。

重写regexp,如

代码语言:javascript
运行
复制
^([A-Z]{0,3}\s?(\d{0,3})\s?[A-Z]?)|([A-Z]\s?(\d{0,3})\s?[A-Z]{0,3})|(([A-HK-PRSVWY][A-HJ-PR-Y]?)\s?([0]?[2-9]?|[1-9]?[0-9]?)\s?[A-HJ-PR-Z]{0,3})

应该有一个期望的效果,即只允许匹配注册的开始,但不幸的是,它不再保证完整的注册将是有效的,因为我必须使大多数字符可选。

你可以尝试一下这样的方法

代码语言:javascript
运行
复制
^(([A-Z]{3})|[A-Z]{1,2}$)\s?((\d{1,3})|$))...

要使其生效,需要每个部分都是完整的,或者是不完整的,但后跟“字符串结束”,由正则表达式中的$表示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15614538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档