alert("baddad".match(/([bd]ad?)*/))//baddad,dad为什么会有这样的输出?不是应该baddad,bad,dad吗?
解决方案 »
- 在 IE 里不能 table.appendChild()
- 问大家一个JS问题!判断2个字符串格式是否相同!
- js分页记录列表,搜索了半天没找到合适的。
- 请问 如何 删除 动态 创建的 对象 !!! 急!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 请问像sohu首页那样的导航条是用什么语言做出来的?怎么做出来的?
- 怎么样用JAVASCRIPT判断一个手机号是联通的还是移动!!!
- 怎么让状态栏只显示我所需要显示的内容?不显示链接地址?
- JAVASCRIPT里2个float相乘会出现精度不对
- 百分求教关于javascript正则表达式的问题
- 高手:用javascript提交数据如:window.open();能否不打开新窗口,直接把server返回的数据放到当前页的表单中。多谢!
- 高分 求一个 jquery弹出框插件
- jquery获取file文件问题。
你是用全局匹配,分组是最后一次定位那个
先是命中 "bad"再"dad" ,所以组1=dad
你不是用全局匹配,分组是最后一次定位那个
先是命中 "bad"再"dad" ,所以组1=dad
那么alert("baddad".match(/([bd]ad*)*/g));
这个为什么会输出:badd,,,
*是贪婪模式的,他会首先匹配尽可能多的字符,所以,在匹配到bad后,由于"*",它会继续拿([bd]ad?)去匹配后面的字符。
但若表达式为:/([bd]ad?)?/g为什么显示bad,dad,呢?
而/([bd]ad?)/g又显示bad,dad?
/([bd]ad?)/g:当([bd]ad?)表达式匹配完成后,由于g模式的村子,所以它会将下一次匹配的位置从上一次匹配后的最后一个位置开始,即字符串'bad'后开始匹配。再次匹配时,就会匹配dad了。