正则表达式-任意位数+位数或[a-z]

时间:2018-11-23 12:55:28

标签: regex

我正在尝试编写一个常规表达式,以检查字符串是否以数字开头(至少一个数字),然后立即以单个字母或数字结尾。

所以:

  • 29c很好
  • 29很好
  • 2425315651252fsaw失败
  • 24241jl.421c失败
  • c失败

到目前为止,我拥有的正则表达式是(^\d+)([a-z]{1}|\d),它传递了2920c,但也传递了诸如29cdsd之类的东西。

我在做什么错了?

5 个答案:

答案 0 :(得分:4)

您的(^\d+)([a-z]{1}|\d)会通过29cdsd,因为它在字符串的开头匹配1个或多个数字,后跟1个字母或1个数字,并在之后允许任何内容。

使用

^[0-9]+[a-z0-9]?$

请参见regex demo

详细信息

  • ^-字符串的开头
  • [0-9]+-任意1个或更多数字
  • [a-z0-9]?-1或0个小写ASCII字母或数字
  • $-字符串的结尾。

答案 1 :(得分:2)

这应该完全遵循您的规则。

^\d+[a-z]?$

答案 2 :(得分:0)

您可以添加锚点$来声明行尾,也可以省略{1}部分:

^(\d+)([a-z]|\d)$

在正则表达式中,您至少要匹配2个字符。如果不需要捕获组,也可以写成:

^\d+[a-z\d]$

Regex demo

那将匹配:

  • ^断言字符串的开头
  • \d+匹配1个以上的数字
  • [a-z\d]一个与a-z或数字匹配的字符类
  • $声明字符串的结尾

答案 3 :(得分:0)

如果“任何数字”可能为零df = pd.DataFrame() # type: pd.DataFrame

答案 4 :(得分:-2)

command: - puma - -C - /cas-server/config/puma.rb -字符串的开头

^-任意数字,0或更多

\d*-小写和大写ASCII字母。

[a-zA-z]-字符串结尾