嗨,我需要一个正则表达式,它接受以下字符串:
[A-Z]-[A-Z]{3-5}[0-9]{2-4}例如X-ABC123 123或Y- or 1234
现在的问题是,连字符右侧字符串的总长度必须始终为5个字符。是否有机会只使用正则表达式来检查这个值?
发布于 2011-11-09 09:42:20
只需在连字符后面添加以下内容:
/(?=[A-Z\d]{5}$)/其结果是:
/^[A-Z]-(?=[A-Z\d]{5}$)[A-Z]{3,5}[0-9]{2,4}/这假设您的输入字符串是您发布的字符串。
X-ABC123 -> fails
Y-AB1234 -> fails
A-ABD12 -> matches
A-ABV111 -> fails如果该字符串是另一个字符串的一部分,则可以将$锚替换为\s_$。
发布于 2011-11-09 09:40:28
从语言理论的角度来看,我认为这是绝对可能的。只需将其分组并添加约束:
我只需要知道是哪种语言指定了regex,但如下所示:
[A-Z]-(^[A-Z][A-Z0-9]4)我有种感觉,你想要正确的部分,首先是一个字符,然后是字符或数字。
发布于 2011-11-09 09:49:59
首先是正则表达式中的问题
量词是{3,5},而不是{3-5} (这将匹配字面意义上的"{3-5}")
您需要3到5个字母和2到4个数字,在总共5个字母和数字==>中,唯一有效的组合是3个字母,后面跟着2个数字。
通常,您可以对此使用积极的展望。
^[A-Z]-(?=.{5}$)[A-Z]{3,5}[0-9]{2,4}$看吧,在Regexr上
如果从(?=.{5}$)的位置到末尾($) 5个字符,则只需要查看它的位置。
但是,如前所述,如果3-5和2-4以及总体5是有效的,您就可以这样做。
^[A-Z]-[A-Z]{3}[0-9]{2}$https://stackoverflow.com/questions/8062913
复制相似问题