【问题标题】:javascript regular expression to not match a wordjavascript正则表达式不匹配单词
【发布时间】:2011-09-20 21:42:56
【问题描述】:

如何使用 javascript 正则表达式检查与某些单词不匹配的字符串?

例如,我想要一个函数,当传递包含 abcdef 的字符串时,返回 false。

'abcd' -> 错误

'cdef' -> 错误

'bcd' -> 真

编辑

最好是,我想要一个像 [^abc] 这样简单的正则表达式,但它不能提供预期的结果,因为我需要连续的字母。

例如。我要myregex

if ( myregex.test('bcd') ) alert('the string does not contain abc or def');

语句myregex.test('bcd') 被评估为true

【问题讨论】:

    标签: javascript regex string


    【解决方案1】:

    这就是你要找的:

    ^((?!(abc|def)).)*$
    

    ?! 部分称为negative lookahead assertion。意思是“不跟”。

    解释在这里: Regular expression to match a line that doesn't contain a word

    【讨论】:

    • 这是我期待的答案!谢谢。我需要一个正则表达式而不是一个函数。我的问题已被编辑,并出现了答案来回答我的问题的新版本。这就是为什么我使用“编辑”部分来避免混淆。
    • 是否有不匹配整个单词的答案?您的示例“abc”、“babc”和“abcd”都失败了,并且“xyz”通过了。我需要“abc”才能失败,但需要“abcd”才能通过。删除 .* 似乎不起作用
    【解决方案2】:
    if (!s.match(/abc|def/g)) {
        alert("match");
    }
    else {
        alert("no match");
    }
    

    【讨论】:

    • 你为什么要在你的正则表达式中捕获?
    • 好点!我想我想如果我不捕捉它可能意味着 ab(c|d)ef。
    • 在这种情况下使用返回布尔值的/abc|def/g.test(s) 可能会更好;)
    【解决方案3】:

    这是一个干净的解决方案:

    function test(str){
        //Note: should be /(abc)|(def)/i if you want it case insensitive
        var pattern = /(abc)|(def)/;
        return !str.match(pattern);
    }
    

    【讨论】:

      【解决方案4】:
      function test(string) {
          return ! string.match(/abc|def/);
      }
      

      【讨论】:

        【解决方案5】:
        function doesNotContainAbcOrDef(x) {
            return (x.match('abc') || x.match('def')) === null;
        }
        

        【讨论】:

          【解决方案6】:

          这可以通过两种方式完成:

          if (str.match(/abc|def/)) {
                                 ...
                              }
          
          
          if (/abc|def/.test(str)) {
                                  ....
                              } 
          

          【讨论】:

            猜你喜欢
            • 2016-03-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多