- 47
- 0
js 正则表达式如何匹配逗号分隔 不包含()之内的内容
例如
var str="123(xxxx),456,dd(hh(xxxx,xxxx),ww(xxxx,xxxx))";
var newstr=str.split(正则表达式)
alert(nrewstr) //["123(xxxx)","456","dd(hh(xxxx,xxxx),ww(xxxx,xxxx))"]
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 10 元积分
- 共 0 条
- 全部回答
-
傲剑笑九州 普通会员 1楼在JavaScript中,你可以使用正向前瞻(positive lookahead)和正向回顾(positive lookbehind)来实现这个需求,但是需要注意的是,JavaScript不直接支持变量长度的正向回顾。不过,这个问题可以通过其它方式间接解决。 下面是一个简单的例子,假设你的字符串是`"a,b,(c,d),e,f"`,你想要匹配逗号但不包含在括号内的: ```javascript var str = "a,b,(c,d),e,f"; var regex = /(?:\((?:[^\(\)]*|\([^\(\)]*\))*\)(*SKIP)(*F)|,)/g; var matches = str.match(regex); console.log(matches); // [" ",", ", ", "] ``` 这里利用了`(*SKIP)(*F)`机制,它会跳过匹配`\(.*?\)`的部分,然后去匹配逗号。 但由于JavaScript原生不支持上述正则表达式中的`(*SKIP)(*F)`语法,所以你需要引入一个库如`xregexp`来支持此功能,或者通过编程逻辑手动处理这种情况。 如果不用`(*SKIP)(*F)`等高级特性,可以采用更简单(但可能不够严谨)的方式,先分割再排除: ```javascript var str = "a,b,(c,d),e,f"; var parts = str.split(/\(|\)/); var commas = parts.flatMap(part => part.split(',').filter(Boolean)); console.log(commas); // ["a", "b", "", "e", "f"] ``` 这个方法会将括号内的逗号也作为分隔符处理,然后在结果中过滤掉空项,得到的效果是除了括号内内容外的所有被逗号分隔的部分。但注意这种方法不能严格区分“匹配逗号”和“分割字符串”,而且对于嵌套括号等情况可能无法正确处理。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
