一个字符串通过正则拆分为数组,出现部分字符串元素重复拆分,求教各位前辈原因出在哪里?var new_str = '[撇132313嘴][色]{}“——[尴13221尬][冷132123汗][抓123123狂]123123[撇嘴][NO]123[色]123[OK]';var test_reg = /((\[NO\])|(\[OK\])+|\[[\u4e00-\u9fa5]{1,3}\])/g;期望的拆分结果是:["[撇132313嘴]", "[色]", "{}“——[尴13221尬][冷132123汗][抓123123狂]123123", "[撇嘴]", "[NO]","123", "[色]", "123", "[OK]"]但实际拆分结果是: ["[撇132313嘴]", "[色]", "{}“——[尴13221尬][冷132123汗][抓123123狂]123123", "[撇嘴]", "[NO]", "[NO]", "123", "[色]", "123", "[OK]", "[OK]"]字符串中[NO]和[OK]拆分了两次,求教各位前辈帮助分析原因出在哪里!!!!以下是全部代码。<!DOCTYPE html><html><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title></head><body> <script> //---1 /\[((NO)|(OK)+|[\u4e00-\u9fa5]{1,3})\]/g //---2 /(\[(NO)|(OK)+|\[[\u4e00-\u9fa5]{1,3}\])/g var test_reg = /((\[NO\])|(\[OK\])+|\[[\u4e00-\u9fa5]{1,3}\])/g; var new_str = '[撇132313嘴][色]{}“——[尴13221尬][冷132123汗][抓123123狂]123123[撇嘴][NO]123[色]123[OK]'; var new_arry = new_str.split(test_reg); var arry = []; for (var i = 0; i <= new_arry.length; i++) { if (new_arry[i] !== '' && new_arry[i] !== undefined) { arry.push(new_arry[i]); } } console.log(arry); </script></body></html>
2 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
哈哈,测试了半天,终于发现了。你的正则表达式有问题:
正确的正则表达式为:test_reg = /([\[]NO[\]])|([\[]OK[\]])+|[\[][\u4e00-\u9fa5]{1,3}[\]]/g;
new_str = '撇132313嘴{}“——尴13221尬[抓123123狂]123123撇嘴123[色]123[OK]';test_reg = /([[]NO[]])|([[]OK[]])+|[{1,3}[]]/g;
a= new_str.split(test_reg);
< Array (16) = $3
0 "[撇132313嘴]"
1 undefined
2 undefined
3 "{}“——尴13221尬[抓123123狂]123123"
4 undefined
5 undefined
6 ""
7 "[NO]"
8 undefined
9 "123"
10 undefined
11 undefined
12 "123"
13 undefined
14 "[OK]"
15 ""
PS: 至于为什么有问题,哪里有问题,你把一个个正则拆开来匹配就会发现了。
添加回答
举报
0/150
提交
取消