【问题标题】:Return true/false for a matched/not matched regex为匹配/不匹配的正则表达式返回真/假
【发布时间】:2011-10-26 12:54:33
【问题描述】:

我在 Javascript 上有这个正则表达式

var myS = "00 - ??:??:?? - a";
var removedTL = myS.match(/^(\d\d) - (\?\?|10|0\d):(\?\?|[0-5]\d):(\?\?|[0-5]\d) - (.*)/);

如果myS 不是那种格式,我需要返回“false”,否则返回true。

我的意思是:

var myS = "00 - ??:??:?? - a";  // TRUE
var myS = "00 - ??:?:?? - a";   // FALSE

如何检查正则表达式是否匹配字符串?

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    这里更合适的函数可能是RegExp.testexplicitly gives you true or false

    console.log(/lolcakes/.test("some string"));
    // Output: false
    
    console.log(/lolcakes/.test("some lolcakes"));
    // Output: true
    

    【讨论】:

      【解决方案2】:

      使用双重logical NOT operator

      return !!removedTL;
      

      这将转换为true/false,具体取决于是否找到匹配项。

      没有匹配项为您提供null,它被转换为false

      一个或多个匹配项会为您提供一个数组,该数组将转换为true


      您也可以使用.test() 代替.match()

      /^(\d\d) - (\?\?|10|0\d):(\?\?|[0-5]\d):(\?\?|[0-5]\d) - (.*)/.test( myS );
      

      ...直接给你一个布尔结果。

      【讨论】:

      • 不会撒谎的!!会失去很多人。不过很酷的把戏。 +1 使用一些甜味。
      • @Jackson:可能。我倾向于假设人们熟悉!!,但我可能不应该。
      【解决方案3】:

      如果没有匹配,match 方法将返回 null

      【讨论】:

      • 那么如何转换为true/false
      • null == false?先生,我不这么认为!
      • 这不是最佳答案。 RegExp.prototype.test() 是 OP 正在寻找的。​​span>
      【解决方案4】:
      var myS = "00 - ??:??:?? - a";
      var patt = new RegExp("^(\d\d) - (\?\?|10|0\d):(\?\?|[0-5]\d):(\?\?|[0-5]\d) - (.*)");
      var removedTL = patt.test(myS);
      

      removedTL 将保存一个布尔值,如果匹配,则为 true,如果不匹配,则为 false

      【讨论】:

      • 除了代码之外,解释removedTL 将持有一个布尔值的几句话将使这个答案更有帮助。
      • 这个答案与三年前 年前发布的其他答案相比有什么不同?
      【解决方案5】:

      由于我也更喜欢使用 match,您可以执行以下解决方法来获得布尔结果:

      var myS = "00 - ??:??:?? - a"
      var removedTL = myS.match(/^(\d\d) - (\?\?|10|0\d):(\?\?|[0-5]\d):(\?\?|[0-5]\d) - (.*)/) != null
      

      【讨论】:

        猜你喜欢
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多