Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript RegExp vs//_Javascript_Regex - Fatal编程技术网

Javascript RegExp vs//

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

我正试图通过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

另外,为什么要在“”中使用“”才能匹配字符串?

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

“\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