JS比较常用的手机号,邮箱,网址正则匹配

前几天需求要求做一个手机号,邮箱和网站的正则匹配,找了半天才找到几个能用的,百度坑太多,为了避免你跳坑,做了一个简单的封装,大佬莫笑。下面见代码

// 常用正则匹配   第一个参数传入要匹配的字段,第二个参数为正常向span标签里添加的类名和方法之类的东西,第三个参数可增加新的正则表达式,但是一定要是数组格式
export function regular(str, className, newRegular) {
    // /(1[3|4|5|6|7|8][\d]{9}|0[\d]{2,3}-[\d]{7,8}|400[-]?[\d]{3}[-]?[\d]{4})/g; 手机号
    //   /[\d\w]+\b@[a-zA-ZA-z0-9]+\.[a-z]+/g  邮箱
    //  /(https?|http|ftp|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/g 网址
    let regular = [/(1[3|4|5|6|7|8][\d]{9}|0[\d]{2,3}-[\d]{7,8}|400[-]?[\d]{3}[-]?[\d]{4})/g, /[\d\w]+\b@[a-zA-ZA-z0-9]+\.[a-z]+/g, /(https?|http|ftp|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/g]
        // 手机号
    let scorePhone = {}
        // 邮箱
    let scoreMailbox = {}
        // 网址
    let scoreWebsite = {}
        // 返回的处理后的字段
    let newFields = str
    if (newRegular) {
        regular = [...regular, ...newRegular]
    }
    regular.forEach((item, index) => {
        let obj = {}
        obj.index = []
        if (str.search(item) !== -1) {
            obj.textAll = str.match(item)
            if (obj.textAll.length) {
                obj.textAll.forEach((x, y) => {
                    obj.index = [...obj.index, [str.indexOf(x), str.indexOf(x) + str.match(item)[y].length]]
                    newFields = newFields.replace(item, `<span ${className?className:''} >${x}</span>`)
                })
            }
        }
        index === 0 ? scorePhone = obj : index === 1 ? scoreMailbox = obj : scoreWebsite = obj
    })
    return {
        scorePhone,
        scoreMailbox,
        scoreWebsite,
        newFields
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值