【发布时间】:2013-03-04 15:02:47
【问题描述】:
我正要把头撞在桌子上,这让我的同事们很开心。我目前有以下正则表达式
(^[\w](( \w+)|(\w*))*[\w]$)|(^\w$)
我想要它做的是匹配任何只包含字母数字字符、没有前导或尾随空格并且单词之间不超过一个空格的字符串。
在这种情况下,单词被定义为一个或多个字母数字字符。
这符合我想要的大部分内容,但是通过测试它还认为第二个单词以后的长度必须是 2 个字符或更多。
测试:
ABC - Pass
Type 1 - Fail
Type A - Fail
Hello A - Fail
Hello Wo - Pass
H A B - Fail
H AB - Pass
AB H - Fail
任何想法我哪里出错了?
【问题讨论】:
-
@Bergi:这应该是一个答案。没有比这更简单和更好的了(好吧,你可以使用非捕获组)。
-
我不确定 OPs 复杂版本中的所有这些捕获组是否都是有意的......
-
@Bergi tbh 此时我只是在尝试任何东西,而正则表达式只是变得越来越大哈哈。你的回答正是我想要的。谢谢
标签: regex