代码之家  ›  专栏  ›  技术社区  ›  Katana

RegExp vs/../[重复]

  •  -1
  • Katana  · 技术社区  · 7 年前

    我正试图通过Marijn Haverbeke的这本精彩的书“雄辩的Javascript”来学习Javascript中的正则表达式。我搞不懂为什么有些比赛,有些虽然看起来很好,但为什么有些不匹配。我不知道我是不是误解了什么或者部分理解了什么。例如-

    console.log(/'\d+'/.test("123"));
        // This doesn't match
    
        console.log(/'\d+'/.test("'123'"));
        // This matches
    
        let myRegEx = new RegExp("\d+");
        console.log(myRegEx.test("123"));
        //Doesn't match
    
        console.log(myRegEx.test("'123'"));
        //Doesn't match either
    

    2 回复  |  直到 7 年前
        1
  •  1
  •   kumarharsh    6 年前

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

    正确的代码:

    控制台.log(/\d+/.test(“123”));

    设myRegEx=new RegExp(“\\d+”); 控制台日志(myRegEx.test(“123”));

    你得加上 \ 对于 new RegExpr 因为 "\\d+" 字符串解释为 "\d+"

    另外,为什么要匹配字符串,就必须在“”中使用“”呢?

    它们不是:

    /\d+/ 匹配“一个数字,一次或多次”

    /'\d+'/ 匹配“一个引用,然后是一个数字,一次或多次,然后是一个引用”

    /\d++.test(“123”)==真

    /'\d+'/.test(“123”)==假(因为 '

    /\d//.test(“'123'”)==真(因为找到了数字)

    /'\d+'/.test(“'123'”)==真

        2
  •  1
  •   Quentin    7 年前

    \ 是字符串文字和正则表达式中的转义字符。

    "\d+" "d+" 所以您要测试一个或多个字符实例 d .