// 正则匹配字符串手机号转数组渲染,特殊处理手机号
const matchPhone = (text) => {
let strArr = [];
const res = text.match(/[1][3456789][0-9]{9}/g) || [];
let step = 0;
res.forEach(item => {
const str = text.substr(step);
const index = str.indexOf(item);
const start = str.substring(0, index);
if (start)
strArr.push({
type: 'text',
text: start
});
strArr.push({
type: 'tel',
text: item,
style: { color: '#4692ec' }
});
step = strArr.map(item => item.text).join('').length;
});
const end = text.substr(step);
if (end)
strArr.push({
type: 'text',
text: end
});
return strArr;
};
{matchPhone(
'河南省郑州市金水区派件中,派件员:李佳佳 手机号:18063802009 新冠疫苗已接种,再次提示:手机号为18738978945,请注意!'
).map((item) => (
<Text
style={item.style}
onClick={() => {
// 点击可拨打电话
var myreg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
if (myreg.test(item.text)) {
Taro.makePhoneCall({
phoneNumber: item.text,
});
}
}}
>
{item.text}
</Text>
))}