为什么macth全局匹配时候和其他不同?
var str = "woshi(rui)(shq)",
reg = /\((.*)\)$/g;
re = /\((.*)\)$/;
alert('exec: '+re.exec(str)+
'\nmatch: '+str.match(re)+
'\nexec(g):'+reg.exec(str)+
'\nmatch(g):'+str.match(reg));
var str = "woshi(rui)(shq)",
reg = /\((.*)\)$/g;
re = /\((.*)\)$/;
alert('exec: '+re.exec(str)+
'\nmatch: '+str.match(re)+
'\nexec(g):'+reg.exec(str)+
'\nmatch(g):'+str.match(reg));
解决方案 »
- javascript求解 bug
- 如何在IE8.0中实现网页设计中点击弹出层后,网页界面变暗淡,并且失效
- 如果控制图层在鼠标指针位置显示?
- 急救!!!!!!!
- js获取URL参数,解析字符串问题,大家来帮忙,很简单,偶太菜!!
- 如何实现这样的功能 》》》 获得页面地址及复制【在线等...】
- 怎样实现在删除时弹出一个提示框,比如确定和取消或者提示一个输入密码的提示框呢?
- onUnload 刷新的问题
- 求教:javascript container
- 浏览中报错Uncaught ReferenceError: cc is not defined
- 正则表达式求教
- UI DIALOG 的close()方法和destroy()方法的区别
可以通过re.lastIndex reg.lastIndex来验证 不带/g的永远是0 只有全局匹配的reg才会在匹配的时候记录
例子不带循环输出 所以使用exec是无意义的 也显示不出来他的强大 exec是正则里最NB的方法
match可以看做exec的缩水简洁版 这个方法不带全局和带全局的区别特别古怪
我都懒得用 不带全局的会把匹配整体 和整体的分组记录到返回的数组里 但设置全局后 却把整体 和每个分组的整体记录在数组里
你要清楚结果的不同先要理解你正则所表达的意思
/\((.*)\)$/ 表示 从末尾开始找 要求必须是)结尾 .*你没加? 所以正则就会贪婪匹配 ()()他就会把 )(当成.来都匹配到()里了 可以修改下 测试测试/\((.*?)\)/
全局匹配返回 所有满足匹配的集合(不返回子匹配)