javascript - js 正则取括号里面的内容
问题描述
取出字符串所有括号里面的内容,括号里面不能有括号
var str = 'dskf(AAA)_8hjk(CCC)dsk(BBB)';var reg = /(?:()w+(?:))/g;var res = str.match(reg); //['(AAA)', '(CCC)', '(BBB)']
这样的到的结果带有两边的括号,不想要括号啊?(?:exper) 这不是非获取匹配么?
问题解答
回答1:/[^(][a-zA-Z0-9]+(?=))/g
这样看下
回答2:/(([^()]+))/g
> s=’dskf(AAA)_8hjk(CCC)dsk(BBB)’> p=/(([^()]+))/g> while (r=p.exec(s)){console.log(r[1])}AAACCCBBB回答3:
/[^()]+(?=))/g,经亲自测试能满足题主需求
回答4:match函数的返回值和使用的正则表达式是不是含有g标志有关系; 如果没有g标志,如果字符串匹配,则返回的结果是一个数组,数组的元素分别是匹配的完整子串,第一个捕获型括号的内容,第二个捕获型括号的内容,第三个捕获型括号的内容...所以数组的长度是捕获型括号的数量+1; 如果有g标志,如果字符串匹配,则返回结果是一个数组,数组的元素分别是匹配的第一个完整子串,匹配的第二个完整子串,匹配的第三个完整子串...所以数组的长度是匹配的次数; 如果不匹配,返回null;
所以,使用g以后,结果中返回的只会是匹配的完整子串,而不会包含捕获型括号的内容,对于你的需求,match函数应该是做不到的。
相关文章:
1. docker api 开发的端口怎么获取?2. 老师,flex-shrink: 1; 按视频操作,不会自动缩放3. css3 - 微信前端页面遇到的transition过渡动画的bug4. 如何解决Centos下Docker服务启动无响应,且输入docker命令无响应?5. python - 怎样在linux下开发flask web应用时查看代码出错(traceback)的地方。6. docker images显示的镜像过多,狗眼被亮瞎了,怎么办?7. 如何解决docker宿主机无法访问容器中的服务?8. macos - mac下docker如何设置代理9. mysql - phpMyAdmin无法导入数据10. python的文件读写问题?

网公网安备