小程序中手機號識別

最近做的一個頁面里面包含手機號,點擊可以撥打電話,原想著讓后端把各個字段查出來就行了,結(jié)果接口方面給直接拼好了。

image

接口返回的字符串:

"【王?!繋煾狄呀訂?,聯(lián)系電話:18839687266。稍后與您聯(lián)系。師傅簽到碼為【1234】,師傅上門輸入簽到碼后才可開始服務(wù)。"

這讓我們綁定打電話的事件就不那么方便了,問題聚焦到解析字符串,找出手機號。

split大法,通過split得到包含手機號的數(shù)組,然后遍歷這個數(shù)組,給手機號的元素打上標(biāo)簽。

parseStr (str){
    const regPhone = /(1\d{10})/ 
    const list = str.split(regPhone)
    const result = []
    return list.map(c => {
        let tag
        regPhone.test(c) ? tag = 'phone' : tag = 'text'
        return {
            type: tag,
            text: c
        }
    })
}
image

通過parseStr函數(shù)得到合適的格式后,循環(huán)渲染給手機號綁定事件就可以了,代碼大概如下:

<view>
    <block wx:for="{{data}}" wx:for-item="i" wx:key="*this">
      <text wx:if="{{i.type === 'text'}}">{{i.text}}</text>
      <text wx:else bindtap="call(i.text)">{{i.text}}</text>
    </block>
</view>

挺簡單的一個實現(xiàn),就是一開始沒想到用split。另外一個要注意的點是這個正則regPhone,仔細看,里面加了有括號,如果separator是包含捕獲括號的正則表達式(),則匹配結(jié)果包含在數(shù)組中。

image

如果不加括號,相當(dāng)于是把匹配到的手機號給丟掉了,加上括號,最終數(shù)組中才會包括我們匹配到的手機號。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容