【问题标题】:regex - check that the string includes pattern only once [duplicate]正则表达式 - 检查字符串是否仅包含一次模式 [重复]
【发布时间】:2016-11-27 11:01:48
【问题描述】:

我只需要检查一次字符串是否包含指定的模式。 例如:

pattern = abc
qabce - returns true
qabceabcr - returns false

我试图做这件事:

abc{1}

但如果字符串至少包含一次模式,则返回 true。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    尝试全局 g 标志

    var multipleTimes = "qabceabcr".match(/abc/g).length > 1
    

    【讨论】:

      【解决方案2】:

      你可以检查匹配数组的长度,如果是1那么它是一个有效的输入;

      function isValid(str) { return (str.match(/abc/g) || []).length; }
      

      然后将其用作:

      isValid('foobar')
      //=> 0 - Bad
      
      isValid('qabce')
      //=> 1 - Good
      
      isValid('qabceabcr')
      //=> 2 - Bad
      

      如果您想要一个纯正则表达式解决方案,那么您可以使用这个负前瞻正则表达式:

      /\b((?!abc)\w)*abc(?!.*abc)\w*/
      

      RegEx Demo

      • ((?!abc)\w)* 是基于 0 个或多个单词字符的负前瞻匹配。它断言下一个位置没有abc
      • (?!.*abc) 是否定的前瞻,它断言我们在单词中没有另一个 abc

      【讨论】:

      • @user2417883:成功了吗?
      猜你喜欢
      • 2012-02-19
      • 2017-05-03
      • 2017-02-09
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      相关资源
      最近更新 更多