我需要一个匹配这些字符串的正则表达式:
测试1
测试123
测试1.1(不是必需的但是很整洁)
测试
测试一下
但不是以下内容:
测试1a
我不知道这个模式应该是什么样的,它最后允许文本或空格,但如果之前有数字则不能。
我试过这个
^.*([0-9])$
(仅匹配Test 1
,但不匹配Test
或Test a
)
还有这个
^.*[0-9].$
(仅匹配Test 1a
,但不匹配Test
或Test 1
)
但它们并不符合我的需要。
答案 0 :(得分:1)
这适用于您提供的所有案例
^\w+(\s(\d+(\.\d+)?|[a-z]))?$
<强> Regex Demo 强>
正则表达式细分
^ #Start of string
\w+ #Match any characters until next space or end of string
(\s #Match a whitespace
(
\d+ #Match any set of digits
(\.\d+)? #Digits after decimal(optional)
| #Alternation(OR)
[a-z] #Match any character
)
)? #Make it optional
$ #End of string
如果您还想包含大写字母,则可以使用
^\w+(\s(\d+(\.\d+)?|[A-Za-z]))?$
答案 1 :(得分:1)
尝试
^\w+\s+((\d+\.\d+)|(\d+)|([^\d^\s]\w+))?\s*$
答案 2 :(得分:0)
根据您的问题中的字符串(以及您的评论):
^\w+(\s[a-z]|\s\d+(\.\d+)?)?$
答案 3 :(得分:0)