首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式为星号,然后是数字或一个字母

正则表达式为星号,然后是数字或一个字母
EN

Stack Overflow用户
提问于 2020-05-04 16:34:06
回答 2查看 352关注 0票数 0

我有这个正则表达式

代码语言:javascript
复制
^[0-9]+[a-zA-Z0-9]*

但是我需要一个总是有一个数字的星星,然后它可以是另一个数字或一个字母,但它不能是数字字母。这封信永远是最后一封。就像这个例子

代码语言:javascript
复制
102A OK
1A OK
2  OK
110 OK
10A1 WRONG
BV WRONG

这封信不能介于两个数字之间。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-04 17:50:19

你可以用消极的眼光看。

代码语言:javascript
复制
^(?!\d+[a-z]\d)\d.*

布格-漠不关心的旗帜。

演示

此正则表达式的匹配表示该字符串不包含按该顺序由一个数字、一个字母、一个数字组成的3个字符子字符串。如果匹配成功时要匹配整个字符串,请将.*添加到正则表达式的末尾。

regex引擎执行以下操作。

代码语言:javascript
复制
^             match beginning of line
(?!           begin negative lookahead
  \d+[a-z]\d  match digits-letter-digit
)             end negative lookahead
\d            match a digit

请注意,结尾处的\d必须遵循负前瞻。如果正则表达式为^\d(?!.\d+[a-z]\d),字符串为1A1,则负查找将无法在A1中找到数字字母数字,而整体匹配将成功(不正确)。

因为负查找被固定在行的开头,并且不消耗字符,如果它失败(匹配成功),那么在regex末尾的\d搜索将从行的开头开始。

票数 1
EN

Stack Overflow用户

发布于 2020-05-04 16:48:18

您可以匹配一个char 1-9,后面是可选数字0-9和可选字符and。

如果使用[a-zA-Z0-9],字符类将按任何顺序匹配列出的任何字符。

如果将字符和数字分开,则字母不能出现在数字之前,而且由于*量词匹配0或更多次,您也可以匹配单个数字。

代码语言:javascript
复制
^[1-9][0-9]*[a-zA-Z]*$

Regex演示

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

https://stackoverflow.com/questions/61597119

复制
相关文章

相似问题

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