在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 字符通過(guò)正則split拆分為數(shù)組時(shí),部分內(nèi)容出現(xiàn)重復(fù)拆分,求教問(wèn)題出現(xiàn)原因?。。?/span>

字符通過(guò)正則split拆分為數(shù)組時(shí),部分內(nèi)容出現(xiàn)重復(fù)拆分,求教問(wèn)題出現(xiàn)原因?。。?/h1>

一個(gè)字符串通過(guò)正則拆分為數(shù)組,出現(xiàn)部分字符串元素重復(fù)拆分,求教各位前輩原因出在哪里?

var new_str = '[撇132313嘴][色]{}“——[尷13221尬][冷132123汗][抓123123狂]123123[撇嘴][NO]123[色]123[OK]';
var test_reg = /((\[NO\])|(\[OK\])+|\[[\u4e00-\u9fa5]{1,3}\])/g;

期望的拆分結(jié)果是:

["[撇132313嘴]", "[色]", "{}“——[尷13221尬][冷132123汗][抓123123狂]123123", "[撇嘴]", "[NO]","123", "[色]", "123", "[OK]"]

但實(shí)際拆分結(jié)果是:

?["[撇132313嘴]", "[色]", "{}“——[尷13221尬][冷132123汗][抓123123狂]123123", "[撇嘴]", "[NO]", "[NO]", "123", "[色]", "123", "[OK]", "[OK]"]

字符串中[NO]和[OK]拆分了兩次,求教各位前輩幫助分析原因出在哪里?。。。∫韵率侨看a。

<!DOCTYPE html>
<html lang="en">
<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>

回答
編輯回答
念舊

你這是正則表達(dá)式多個(gè)()捕獲的原因,你改成下面這樣就好了

/(\[NO\]|\[OK\]|\[[\u4e00-\u9fa5]{1,3}\])/g;
2017年12月20日 00:50
編輯回答
短嘆

哈哈,測(cè)試了半天,終于發(fā)現(xiàn)了。你的正則表達(dá)式有問(wèn)題:
正確的正則表達(dá)式為:
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: 至于為什么有問(wèn)題,哪里有問(wèn)題,你把一個(gè)個(gè)正則拆開來(lái)匹配就會(huì)發(fā)現(xiàn)了。

2018年2月25日 19:08