Javascript RegExp vs//
我正试图通过Marijn Haverbeke的这本精彩的书《雄辩的Javascript》,学习Javascript中的正则表达式。我无法弄清楚为什么有些是匹配的,有些是不匹配的,尽管它们看起来很好。我不知道我是否误解了什么或部分理解了什么。比如说-Javascript RegExp vs//,javascript,regex,Javascript,Regex,我正试图通过Marijn Haverbeke的这本精彩的书《雄辩的Javascript》,学习Javascript中的正则表达式。我无法弄清楚为什么有些是匹配的,有些是不匹配的,尽管它们看起来很好。我不知道我是否误解了什么或部分理解了什么。比如说- console.log(/'\d+'/.test("123")); // This doesn't match console.log(/'\d+'/.test("'123'")); // This matches
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
另外,为什么要在“”中使用“”才能匹配字符串?
\
是字符串文字和正则表达式中的转义字符
“\d+”
与“d+”
相同,因此您正在测试字符的一个或多个实例d
正确的代码:
console.log(/\d+/.test(“123”))
或
让myRegEx=newregexp(“\\d+”);
console.log(myRegEx.test(“123”)
您必须为新RegExpr
添加\
,因为“\\d+”
是解释为“\d+”
另外,为什么要在“”中使用“”才能匹配字符串
它们不是:
/\d+/
匹配“一个数字,一次或多次”
/'\d+'/
匹配“一个引号,然后是一个数字,一次或多次,然后是一个引号”
因此:
/\d+/.测试(“123”)==真
/'\d+'/.test(“123”)==false(因为找不到'
)
/\d+/.test(“'123'))==true(因为找到了数字)
/'\d+'/.test('123')==true
@Adriano-这是正则表达式的文档。这与字符串文本的处理方式(在字符串传递给RegExP构造函数之前)有什么关系?我编辑了这篇文章,明确提到了我通过examples@UnbearableLightness是的,这里的社区wiki答案涵盖了
\d