首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于测试字符串部件长度的正则表达式

用于测试字符串部件长度的正则表达式
EN

Stack Overflow用户
提问于 2011-11-09 09:34:20
回答 3查看 209关注 0票数 0

嗨,我需要一个正则表达式,它接受以下字符串:

代码语言:javascript
复制
[A-Z]-[A-Z]{3-5}[0-9]{2-4}

例如X-ABC123 123或Y- or 1234

现在的问题是,连字符右侧字符串的总长度必须始终为5个字符。是否有机会只使用正则表达式来检查这个值?

EN

回答 3

Stack Overflow用户

发布于 2011-11-09 09:42:20

只需在连字符后面添加以下内容:

代码语言:javascript
复制
/(?=[A-Z\d]{5}$)/

其结果是:

代码语言:javascript
复制
/^[A-Z]-(?=[A-Z\d]{5}$)[A-Z]{3,5}[0-9]{2,4}/

这假设您的输入字符串是您发布的字符串。

代码语言:javascript
复制
X-ABC123 -> fails
Y-AB1234 -> fails
A-ABD12  -> matches
A-ABV111 -> fails

如果该字符串是另一个字符串的一部分,则可以将$锚替换为\s_$。

票数 1
EN

Stack Overflow用户

发布于 2011-11-09 09:40:28

从语言理论的角度来看,我认为这是绝对可能的。只需将其分组并添加约束:

我只需要知道是哪种语言指定了regex,但如下所示:

代码语言:javascript
复制
[A-Z]-(^[A-Z][A-Z0-9]4)

我有种感觉,你想要正确的部分,首先是一个字符,然后是字符或数字。

票数 0
EN

Stack Overflow用户

发布于 2011-11-09 09:49:59

首先是正则表达式中的问题

量词是{3,5},而不是{3-5} (这将匹配字面意义上的"{3-5}")

您需要3到5个字母和2到4个数字,在总共5个字母和数字==>中,唯一有效的组合是3个字母,后面跟着2个数字。

通常,您可以对此使用积极的展望。

代码语言:javascript
复制
^[A-Z]-(?=.{5}$)[A-Z]{3,5}[0-9]{2,4}$

看吧,在Regexr上

如果从(?=.{5}$)的位置到末尾($) 5个字符,则只需要查看它的位置。

但是,如前所述,如果3-5和2-4以及总体5是有效的,您就可以这样做。

代码语言:javascript
复制
^[A-Z]-[A-Z]{3}[0-9]{2}$
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8062913

复制
相关文章

相似问题

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