javascript 正则

KimD 2013-09-26 10:53:58
在学习javascript正则时,虽折腾了不少时间,但还是不太理解alert("baddad".match(/([bd]ad?)*/))为何输出baddad,dad。

希望各位能够给予帮助,非常感谢,当然,各位如有更多疑问也可提出,大家共同探讨进步。多谢
...全文
181 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
好吧我来了 2013-09-27
  • 打赏
  • 举报
回复
你这个正则虽然简单,但是涉及的东西很多保存 贪婪模式、分组、匹配模式等。可以比较: "baddad".match(/(?:[bd]ad?)*/); "baddad".match(/([bd]ad?)?/); "baddad".match(/([bd]ad?)?/g); "baddad".match(/([bd]ad?)*/g); 参考 http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
  • 打赏
  • 举报
回复
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
</script>
<script>
var matchs = 'baddad'.match(/([bd]ad?)/g);
alert(matchs[0] +' ' + matchs[1]+' ');
var reg = /([bd]ad?)*/g;
reg.test('badlad');
alert(RegExp.$1);
</script>
</head>
<body>

</body>
</html>
baddad好理解,*?也是贪禁模式,全部匹配时会尽可能多匹配 关键是dad 分组里面只去一种,里面可能的情况是bad,dad,取第二种,dad
tonyljl526 2013-09-27
  • 打赏
  • 举报
回复
一层一层的看 [bd] #是bd中取其中的一个 a #是a必须要有 d? #d可以出现0次或者1次 这样出来的 bad dad ba da 了 然后 后面还有一个星号* 也就是前面这四个 可以出现0次或者多次 所以baddad,dad 就会被匹配出来了
zhjdg 2013-09-26
  • 打赏
  • 举报
回复
不能改,应该看这
var $b = ['dd','b'];
alert($b);
zhjdg 2013-09-26
  • 打赏
  • 举报
回复
不能用alert调试,alert很容易让人误解的。 看这是什么。
"baddad".match(/([bd]ad?)*/))
fzfei2 2013-09-26
  • 打赏
  • 举报
回复
([bd]ad?)* , 这个以a为中心看好理解 [bd] a前b或d, d? 可以有d , ([bd]ad?)* 这样的组合 0~n次 baddad 全中,分两次 bad dad ,最后一个组1 dad ,所以 baddad,dad

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧