string.split(RegExp)方法使用正則表達(dá)式分隔字符串,當(dāng)正則表達(dá)式含有小括號()的時(shí)候翻個的字符串會出現(xiàn)錯誤,但是通過string.match(RegExp)的時(shí)候返回的值是我想要的是正確的
例如
var str = '【廣州市】 【廣州黃埔】(020-12345678、020-87654321) 的 88888888表帶 () 已攬收';
var reg = /(\d{3}-)?\d{7,9}/g;
var phones = str.match(reg);
console.log(phones);
var arr = str.split(reg);
console.log(arr);
var element = [];
for(var i=0;i<arr.length;i++){
var item = {
text:arr[i],
click:false
}
element.push(item);
if(i==arr.length-1){
break;
}
var item2 = {
text:phones[i],
click:true
}
element.push(item2);
}
console.log(element);
然后我理想的返回結(jié)果是
上圖是正則表達(dá)式中沒有加括號時(shí)強(qiáng)制性要求添加區(qū)號的返回結(jié)果
var reg = /\d{3}-\d{7,9}/g;//上圖的結(jié)果使用該正則
var reg = /(\d{3}-)?\d{7,9}/g;//下圖的結(jié)果使用該正則
然而加了括號條件以后,使用str.split(reg)以后得到的卻是一個很奇怪的結(jié)果,里面拆分的結(jié)果不僅出現(xiàn)了奇怪的斷句錯誤,還出現(xiàn)帶有undefined的數(shù)據(jù)
導(dǎo)致我后面的循環(huán)直接出現(xiàn)更大的錯誤,求解正則中添加括號出現(xiàn)這樣的問題怎么處理?
原因是split在處理含有捕獲組的正則的時(shí)候,會把捕獲組里面捕獲到的數(shù)據(jù)也當(dāng)做分割后結(jié)果的一部分。如下:
代碼如下:
var str="abclskd,jsldk-lskdfj778,jsdkf*jdkf";
var regex1=/[,*-]/;
str.split(regex1);
(5) ["abclskd", "jsldk", "lskdfj778", "jsdkf", "jdkf"]
var regex2=/([,*-])/;
str.split(regex2);
(9) ["abclskd", ",", "jsldk", "-", "lskdfj778", ",", "jsdkf", "*", "jdkf"]
var regex3=/(?:[,*-])/;
str.split(regex3);
(5) ["abclskd", "jsldk", "lskdfj778", "jsdkf", "jdkf"]
所以,為了不出現(xiàn)這樣的結(jié)果,你把()改為(?:)
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。