我正在尝试通过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
此外,为什么要在“”中要求“”来匹配字符串?
答案 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'”)===真