正则表达式"字符数字"

时间:2016-04-15 14:04:17

标签: asp.net regex vb.net

我需要一个匹配这些字符串的正则表达式:

测试1
测试123
测试1.1(不是必需的但是很整洁)
测试
测试一下

但不是以下内容:
测试1a

我不知道这个模式应该是什么样的,它最后允许文本或空格,但如果之前有数字则不能。

我试过这个 ^.*([0-9])$(仅匹配Test 1,但不匹配TestTest a) 还有这个 ^.*[0-9].$(仅匹配Test 1a,但不匹配TestTest 1)  但它们并不符合我的需要。

4 个答案:

答案 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)

您尝试的另一种模式:

^(Test(?:$|\s(?:\d$|[a-z]$|\d{3}|\d\.\d$)))

LIVE DEMO.