RegExp与/.../

时间:2018-08-21 15:30:06

标签: javascript regex

我正在尝试通过Marijn Haverbeke撰写的精彩著作“ Eloquent 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 个答案:

答案 0 :(得分:1)

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

"\d+""d+"相同,因此您正在测试字符d的1个或多个实例。

答案 1 :(得分:1)

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

正确的代码:

  

console.log(/ \ d + /。test(“ 123”));

  

让myRegEx = new RegExp(“ \\ d +”);   console.log(myRegEx.test(“ 123”));

您必须为\添加new RegExpr,因为"\\d+"是解释为"\d+"的字符串

  

此外,为什么要在“”中要求“”来匹配字符串?

它们不是:

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

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

所以:

  

/ \ d + /。test(“ 123”)===是

     

/'\ d +'/。test(“ 123”)===否(因为找不到'

     

/ \ d + /。test(“'123'”)=== true(因为找到了数字)

     

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