Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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正则表达式_Javascript_Regex - Fatal编程技术网

了解基本Javascript正则表达式

了解基本Javascript正则表达式,javascript,regex,Javascript,Regex,在Javascript中,为什么 /^(\d{1}){3}$/.exec(123) 返回[“123”,“3”],但 /^(\d{1})$/.exec(123) 返回null而不是[“3”] 另外,当1是^后面的数字时,为什么第一个表达式返回3?第一种情况 注意到\d{1}仅相当于\d /^(\d{1}){3}$/ 可以简化为 /^(\d){3}$/ /^(\d)$/ 也就是说 字符串的开头 匹配一个三位数的字符串 结束 \d周围的括号定义了一个捕获组。如前所述,当您重复捕获组时,通

在Javascript中,为什么

/^(\d{1}){3}$/.exec(123)
返回
[“123”,“3”]
,但

/^(\d{1})$/.exec(123)
返回
null
而不是
[“3”]

另外,当
1
^
后面的数字时,为什么第一个表达式返回
3

第一种情况 注意到
\d{1}
仅相当于
\d

/^(\d{1}){3}$/
可以简化为

/^(\d){3}$/
/^(\d)$/
也就是说

  • 字符串的开头
  • 匹配一个三位数的字符串
  • 结束
\d
周围的括号定义了一个捕获组。如前所述,当您重复捕获组时,通常的实现只保留最后一次捕获

这就是为什么最终的结果是

[
  "123", // the whole matched string
  "3",   // the last captured group
]

第二种情况 可以再次简化为

/^(\d){3}$/
/^(\d)$/
也就是说

  • 字符串的开头
  • 匹配一个数字
  • 结束
由于
123
是一个三位字符串,它与正则表达式不匹配,因此结果是
null

第一种情况 注意到
\d{1}
仅相当于
\d

/^(\d{1}){3}$/
可以简化为

/^(\d){3}$/
/^(\d)$/
也就是说

  • 字符串的开头
  • 匹配一个三位数的字符串
  • 结束
\d
周围的括号定义了一个捕获组。如前所述,当您重复捕获组时,通常的实现只保留最后一次捕获

这就是为什么最终的结果是

[
  "123", // the whole matched string
  "3",   // the last captured group
]

第二种情况 可以再次简化为

/^(\d){3}$/
/^(\d)$/
也就是说

  • 字符串的开头
  • 匹配一个数字
  • 结束

由于
123
是一个三位字符串,它与正则表达式不匹配,因此结果是
null

,因为正则表达式就是这么说的。这是超基本的正则表达式语法;您应该查阅参考资料,而不是StackOverflow。答案与
^
$
锚定相关。。。谷歌吧!在Sniffer编辑之后,这似乎是一个值得回答的问题-它可以继续解释正则表达式的重复部分(the
{3}
)和捕获组(为什么第一个正则表达式在结果中包含“3”)。@Douglas问题在于,它不是问为什么第一个表达式匹配3而不是1-只是对正则表达式缺乏理解。这个问题很容易被互联网上的许多初学者教程所回答。对不起,我的英语不好,但是为什么在第一个正则表达式中也会返回3,因为3不跟随^?因为正则表达式是这么说的。这是超基本的正则表达式语法;您应该查阅参考资料,而不是StackOverflow。答案与
^
$
锚定相关。。。谷歌吧!在Sniffer编辑之后,这似乎是一个值得回答的问题-它可以继续解释正则表达式的重复部分(the
{3}
)和捕获组(为什么第一个正则表达式在结果中包含“3”)。@Douglas问题在于,它不是问为什么第一个表达式匹配3而不是1-只是对正则表达式缺乏理解。这个问题很容易被互联网上的许多初学者教程所回答。对不起,我的英语不好,但是为什么在第一个正则表达式中也返回3,因为3不跟随^?