请问关于正则这是为什么

请问关于正则这是为什么

请问老师我不太懂这里可以解释一下吗

<!DOCTYPE html>
<html>

<head>
    <title></title>
</head>

<body>
	<div id='one'>点击我</div>
  <script type="text/javascript">
  	var str='my name is 123';
  	var pattern=/\d{0,}/;
  	console.log(pattern.exec(str));
  </script>
</body>

</html>

这里的/\d{0,}/就相当于  /\d*/  按照我的理解\d匹配数字 难道不应该匹配到123吗,为什么会匹配到空字符串。

但如果换成\d+ 就会匹配到123  请问这是为什么

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕星星 2018-09-26 16:43:33

可以这样理解,匹配字符串时,从左到右开始匹配,开始匹配到了m,不是数字,按道理会继续往下匹配到正确的为止。但是既然可以匹配一次,为什么还要继续往下匹配呢,所以就输出了空。反正匹配了已经执行了,有没有匹配到就没有关系了。

提问者 hy_wang 2018-09-26 16:41:13

http://img1.sycdn.imooc.com//climg/5bab46280001105610011001.jpg
老师是这个意思吗

好帮手慕星星 2018-09-26 15:30:41

*是匹配0次或者是多次,所以是可以匹配0次的,输出的结果就是空的。

+是匹配一次或者是多次,所以输出来的就是123。

祝学习愉快~~

  • 提问者 hy_wang #1
    老师默认不是贪婪型匹配吗,使用了* 为什么还匹配0次 默认不应该匹配一次吗
    2018-09-26 15:34:01
  • 好帮手慕星星 回复 提问者 hy_wang #2
    匹配0次指的是:开始匹配到的是m,不符合数字要求,就直接返回了,不会再往下匹配。所以输出的是空。
    2018-09-26 15:49:21
  • 提问者 hy_wang 回复 好帮手慕星星 #3
    老师我还是不太懂。可以解释详细点吗。。
    2018-09-26 16:37:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师