工作中常用的正则表达式

171 阅读1分钟

手机号码的正则:

以1开头,第2位可能是3、4、5、6、7、8、9中的其中一位,d{9}表示表示数字[0-9]中的其中一位总共有9位,$表示结束。手机号码总共11位。
/^1[3456789]d{9}$/

function checkPhone(){ 
    var phone = document.getElementById('phone').value;
    if(!(/^1[3456789]d{9}$/.test(phone))){ 
        alert("手机号码有误,请重填");  
        return false; 
    } 
}

或者
/^1(3|4|5|6|7|8|9)d{9}$/

function checkPhone(){ 
    var phone = document.getElementById('phone').value;
    if(!(/^1(3|4|5|6|7|8|9)d{9}$/.test(phone))){ 
        alert("手机号码有误,请重填");  
        return false; 
    } 
}

正则匹配URL参数

// https://juejin.im/search?query=typeof%20instanceof&type=all&id=1
function getUrlParam(name) {
	// 获取路径?以及?之后的数据,比如:?query=typeof%20instanceof&type=all
	let search = window.location.search
    // 删除?   ,比如:query=typeof%20instanceof&type=all
    let paramss = search.substr(1)          

    // (^|&),表示name之前是空或者&符号
    // [^&]*,表示匹配除了&字符之外的任何一个字符,*表示0次或多次
    // &|$,表示以&之前结束,或者到paramss的最后
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)")
	let s = paramss.match(reg)
	let value = ''
    if (s && s.length > 0) {    // 如果正则表达式匹配到了结果
	value = unescape(s[2])		// unescape:解码或者反转义
    }
    return value
}
console.log(getUrlParam('query'))