代码之家  ›  专栏  ›  技术社区  ›  Julien Poulin

正则表达式-不以某些后缀结尾[重复]

  •  0
  • Julien Poulin  · 技术社区  · 6 年前

    我有一个字符串a,想测试另一个字符串B是否不是它的一部分。这是一个非常重要的问题

    我可以做:

    /foobar/.test('foobar@bar.de')
    

    然后把它倒过来,像这样:

    !(/foobar/).test('foobar@bar.de') 
    

    我的问题是,我需要在正则表达式中执行它,而不是使用它们的结果。比如:

    /!foobar/.test('foobar@bar.de')
    

    (不起作用)

    换句话说:正则表达式应该测试是否不存在,在这种情况下返回true。

    0 回复  |  直到 15 年前
        1
  •  75
  •   Bart Kiers    15 年前

    尝试:

    /^(?!.*foobar)/.test('foobar@bar.de')
    

    ^          # start of the string 
    (?!        # start negative look-ahead
      .*       # zero or more characters of any kind (except line terminators)
      foobar   # foobar
    )          # end negative look-ahead
    

    因此,在简单的英语中,如果字符串'foobar'可以被“看见”,regex将从字符串的开始处查看。如果能“看见”就有了

    *不匹配,因为它是

    更多关于前瞻性的内容: http://www.regular-expressions.info/lookaround.html 但请注意,JavaScript只支持look aheads,不支持look aheads- 落后

        2
  •  4
  •   Shrey Gupta    10 年前
    ^(?!.*(word1|word2|word3))
    

    将匹配不包含以下内容的字符串: word1 , word2 word3 (您可以无限期地扩展列表)。

    ^(?!$)(?!.*(word1|word2|word3))  
    
        3
  •  1
  •   Sandro Rosa    9 年前

    这是一个不等式的例子。 首先我隔离运算符'<',之后是操作数“a”和“b”。

    var _str = "a < b" ;
    var _op = /</g ;
    var _no_op = /[^(<|\ )]/g ;
    console.log( _str, _str.match( _op ) ); // get '<'
    console.log( _str, _str.match( _no_op ) ); // get 'a', 'b'
    

    P.S.:我只是在逆表达式中添加了空白,以便检索操作数的精确匹配。

        4
  •  -1
  •   wprl    11 年前

    如果您要搜索的内容真的不比“foobar”这样的简单字符串复杂:

    if (yourString.indexOf("foobar") === -1) {
      // ...
    }
    

    http://www.w3schools.com/jsref/jsref_indexOf.asp