【问题标题】:Regex for more than one word separated by space?用空格分隔多个单词的正则表达式?
【发布时间】:2015-09-10 18:42:59
【问题描述】:

我需要 2 个或多个用空格分隔的单词的正则表达式,例如:

Test            //invalid
Test two        //valid
Test two three  //valid
Test-two        //invalid

[\w\s]+ 给了我所有的单词,但不确定如何从验证中排除 1 个单词。

【问题讨论】:

    标签: regex


    【解决方案1】:

    字符类中不要包含空格:\w+\s+\w+

    通过在字符类中保留空格,您已指定需要任意数量的单词字符或空格,这将很快吞噬整个字符串。通过分离单词和空格类,您可以指定“任意数量的单词字符后跟任意数量的空格字符,然后再添加一些单词字符”。

    除非您要捕获单词,否则请从它们中删除量词,因为您不在乎单词有多长,只关心它们是否存在:\w\s+\w

    【讨论】:

    • “一二三”不成立,三正在寻找另一个词
    • Works just fine for me。模式将在“一”和“二”之间匹配,并且字符串将被验证。
    • 不验证超过 2 个字
    • @che-azeh:正确,但修改起来并不难。具体来说,将\s+\w+ 提取到可重复的模式中就可以了:\w+(?:\s+\w+)+
    【解决方案2】:

    词类、空格、词类……

    \w+ \w+

    【讨论】:

      【解决方案3】:

      我知道它已经晚了,但为了将来的观点

      /(\w+\s+[^-])+\S[^-]+/
      

      此正则表达式将返回有效输入和无效输入的第一个有效部分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-15
        • 2011-05-21
        • 2016-01-17
        • 2021-07-10
        • 1970-01-01
        • 2013-12-13
        相关资源
        最近更新 更多