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