1. test()方法
使用方法: Reg.test(str)
找到返回true,否则false 找到第一个后就会停止向后找
let str = 'abcdefg'
let reg = /b/
console.log(Reg.test(str)) =>true
2. match()方法
str.match(Reg)
不匹配返回null ,匹配到就返回对应的数组
let str = 'abcdadfgh'
let reg = /a/g
let arr = str.match(reg) => ["a", "a"]
3. search()方法
str.search(reg)
匹配成功返回对应得位置,不成功返回 -1
let str = 'abcdadfgh'
let reg = /d/
str.search(reg) => //3(下标从0开始)
4. replace()方法
str.replace(reg,newstr)
replace函数一次只能替换一个目标字符串
newstr需要替换成的东西 返回替换完成后的字符串
替换单个目标字符串
let str = 'abcd刘小妹adfgh'
let reg = /刘小妹/
str.replace(reg,'西红柿') => // "abcd西红柿adfgh"
替换多个目标字符串
let str = 'abcd刘小妹adfgh小妹'
let reg = /刘小妹/
str.replace(reg,'西红柿') => // "abcd西红柿adfgh小妹"
如何替换多个目标字符串?
let str = 'abcd刘小妹adfgh刘小妹'
let reg = /刘小妹/
str.replace(new RegExp(reg, 'g'),'西红柿') // 简写str.replace(/reg/g,'西红柿')
利用正则常用方法实现物流时间轴的数据处理(点击电话号码即可拨打)
let data = [{
"context": "[邢台市]快件在【邢台高新集散点】已装车,准备发往 【邢台市沙河市宋璟营业点】",
"time": "2020-03-02 13:17:55",
"ftime": "2020-03-02 13:17:55"
}, {
"context": "[邢台市]正在派送途中,请您准备签收(派件人:邓朋飞,电话:18631965961)",
"time": "2020-03-02 13:59:33",
"ftime": "2020-03-02 13:59:33"
}, {
"context": "[邢台市]快件交给邓朋飞,正在派送途中(联系电话:18631965961,顺丰已开启“安全呼叫”保护您的电话隐私,请放心接听!)",
"time": "2020-03-02 14:04:19",
"ftime": "2020-03-02 14:04:19"
}, {
"context": "[邢台市]您的快件已签收,如有疑问请电联小哥【邓朋飞,电话:18631965961】。疫情期间顺丰每日对网点消毒、小哥每日测温、配戴口罩,感谢您使用顺丰,期待再次为您服务。(主单总件数:1件)",
"time": "2020-03-02 14:37:20",
"ftime": "2020-03-02 14:37:20"
}]
const telReg = /1[3-9]\d{9}|[0][1-9]{2,3}-[0-9]{5,10}|95\d{3}/g
data.forEach(item => {
if (telReg.test(item.context)) {
let tels = [...new Set(item.context.match(telReg))]
tels.forEach(item1 => {
item.context = item.context.replace(new RegExp(item1, 'g'),, `<a href="tel:${item1}">${item1}</ a>`)
})
}
})
console.log(data)