求判断字符串包含至少两个单词的更优正则表达式
更优的正则表达式方案
针对你的需求(判断已去除首尾空格的字符串包含两个及以上单词,单词定义为[\w']+),这里有几个更简洁高效的方案:
方案1:最简洁直接的实现
既然你已经确保字符串首尾无空格,那只要字符串中存在任意空白字符,就说明至少有两个单词。直接用:
\s
只要这个正则能匹配到内容,就返回true。这个方案完全符合你的判断逻辑,比原方案简洁太多,执行效率也最高。
方案2:严格匹配单词结构
如果需要确保分隔符前后都是符合定义的单词(防止极端情况下的无效输入,虽然你说输入是合法单词组成的),可以用:
^[\w']+\s+[\w']+
这个正则会匹配“开头是一个有效单词,后跟至少一个空白字符,再跟至少一个有效单词”的字符串,完全覆盖两个及以上单词的场景。
方案3:支持多类型空白符(可选)
如果你的场景中单词分隔符可能包含制表符等其他空白字符,上面的\s已经能匹配所有空白类型(空格、制表符、换行等),无需修改。如果只想匹配空格,把\s换成 即可:
^[\w']+ +[\w']+
原方案的不足
你原来的([\w\']+ ){1,}需要匹配“单词+空格”的组合至少一次,逻辑上没问题,但冗余且不够直观——其实只要存在一次有效的单词分隔(空格)就足够判断,没必要重复匹配组合。
内容的提问来源于stack exchange,提问作者willyab
相关产品推荐
相关产品推荐

