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

鍍金池/ 問答/Java  HTML/ 幫忙寫個(gè)正則,用于匹配電話號(hào)碼

幫忙寫個(gè)正則,用于匹配電話號(hào)碼

匹配一段電話號(hào)碼,單純的字符串匹配我已經(jīng)寫好了,但是要過濾一些特殊的情況
這是我寫的匹配電話號(hào)碼的正則,用于匹配電話號(hào),并且添加a標(biāo)簽用于直接點(diǎn)擊打電話。并不是用于獲取電話號(hào)碼。

let phoneRex = /(1[3-8]\d{9})(?!@)/gi
return xxx.replace(phoneRex, '&nbsp;<a class="tel-text" href="tel:$1">$1</a>&nbsp;')

但比如匹配下面這個(gè)就有問題

qwerqwer<span name='14412121212'>14412121212</span>14412121212qwerqw14412121212erqewr

由于這個(gè)正則會(huì)匹配到spanname和內(nèi)部,而實(shí)際的需求是要匹配所有不被span標(biāo)簽包裹的14412121212,并且前面那個(gè)span標(biāo)簽不一定會(huì)有,所以正則是應(yīng)該過濾掉那兩種情況的,但是不知道怎么寫

想半天沒想出來,求助~~

update:

/(1[3-8]\d{9})(?!@|((("|')?>)?\S*<\/\w*>))/gi

根據(jù)大家提供的思路,最終有了這個(gè)正則
用于匹配所有不在標(biāo)簽內(nèi)的電話號(hào)碼,第一個(gè)排除@符號(hào)是因?yàn)橛械泥]箱是電話號(hào)碼開頭的,比如說14412121212@163.com

感謝大家~

回答
編輯回答
墻頭草

/(1[3-8]\d{9})$/gi

2017年1月17日 15:33
編輯回答
久愛她

可以這樣子匹配,/<span>1[3|4|5|6|7|8]d{9}/g;還有一種處理方法,就是先找出給定字符串最后一次出現(xiàn)的位置,然后截取11位長(zhǎng)度,就能找出最后的手機(jī)號(hào)碼

2017年4月21日 12:30
編輯回答
熟稔

沒有太明白你的意思,只要最后一個(gè)?取匹配結(jié)果的最后一個(gè)元素?

let phoneRex = /(1[3-8]\d{9})(?!@)/gi
let str = "<span name='14412121212'>14412121212<span>14412121212"
let result = str.match(phoneRex)
console.log(result && result[result.length - 1]) // "14412121212"

還是說多個(gè)相同的電話號(hào)碼只需要匹配一個(gè),也就是匹配結(jié)果去重?

let phoneRex = /(1[3-8]\d{9})(?!@)/gi
let str = "<span name='14412121212'>14412121212<span>14412121212"
let result = str.match(phoneRex)
console.log(result && [...new Set(result)]) // ["14412121212"]

Update:
思路是匹配一個(gè)電話號(hào)碼,然后用斷言判斷后面沒有電話號(hào)碼,也就是說這個(gè)就是最后一組電話號(hào)碼:

let phoneRex = /(1[3-8]\d{9})(?!@|.*?\1)/gi
let str = "qwerqwer<span name='14412121212'>14412121212<span>14412121212qwerqwerqewr"
let result = str.replace(phoneRex, "<a>$&</a>") 
// "qwerqwer<span name='14412121212'>14412121212<span><a>14412121212</a>qwerqwerqewr"
2018年2月4日 03:11
編輯回答
不討喜

語無倫次感。。。再寫個(gè)正則把標(biāo)簽內(nèi)容先過濾掉不就行了,不知道有沒有理解,,,

我大致理解了,你要去掉兩種情況1,'aaa14412121212aaa'2,>ddd14412121212aaa<

正則就先匹配不以分號(hào)'開頭'結(jié)尾和>開頭<結(jié)尾的電話號(hào)碼字符串;然后再匹配電話號(hào)碼,替換鏈接

2018年5月28日 07:33
編輯回答
我不懂

額,不是很明白你的描述,如果只是需要匹配最后一個(gè)12的話,這段代碼應(yīng)該沒問題(/12$/).test('14412121212')

2017年5月7日 07:39
編輯回答
執(zhí)念
/(1[3-8]\d{9})(?!@|((("|')?>)?\S*<\/\w*>))/gi

根據(jù)大家提供的思路,最終有了這個(gè)正則
用于匹配所有不在標(biāo)簽內(nèi)的電話號(hào)碼,第一個(gè)排除@符號(hào)是因?yàn)橛械泥]箱是電話號(hào)碼開頭的,比如說14412121212@163.com

感謝大家~

2017年9月21日 20:05