我正在尝试编写一个常规表达式,以检查字符串是否以数字开头(至少一个数字),然后立即以单个字母或数字结尾。
所以:
29c
很好29
很好2425315651252fsaw
失败24241jl.421c
失败c
失败到目前为止,我拥有的正则表达式是(^\d+)([a-z]{1}|\d)
,它传递了29
,20c
,但也传递了诸如29cdsd
之类的东西。
我在做什么错了?
答案 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]$
那将匹配:
^
断言字符串的开头\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]
-字符串结尾