项目中常用到的正则(价格千位分割格式化,手机号3-4-4格式化,密码验证,去除空格,获取url参数,检测24小时时间制,检测url前缀,检测中文,检测手机号,英文单词前后加空格,判断版本号)

1、 数字价格千分位分割

'123456789'.replace(/(?!^)(?=(\d{3})+$)/g, ',') // "123,456,789"

2、手机号3-4-4分割,表单搜集场景,经常遇到的手机格式化

let mobile = '18379836654'
let mobileReg = /(?=(\d{4})+$)/g
console.log(mobile.replace(mobileReg, '-')) // 183-7983-6654
//用户输入手机号的过程中,不断格式化
const formatMobile = (mobile) => {
    
    
	return String(mobile).slice(0,11)
	    .replace(/(?<=\d{3})\d+/, ($0) =>'-' + $0)
	    .replace(/(?<=[\d-]{8})\d{1,4}/, ($0) =>'-' + $0)
}
console.log(formatMobile(123)) // 123
console.log(formatMobile(1234)) // 123-4
console.log(formatMobile(12345)) // 123-45
console.log(formatMobile(123456)) // 123-456
console.log(formatMobile(1234567)) // 123-4567
console.log(formatMobile(12345678)) // 123-4567-8
console.log(formatMobile(123456789)) // 123-4567-89
console.log(formatMobile(12345678911)) // 123-4567-8911

3、验证密码的合法性

//密码长度是6-12位,由数字、小写字母和大写字母组成,但必须至少包括2种字符
let reg = /(((?=.*\d)((?=.*[a-z])|(?=.*[A-Z])))|(?=.*[a-z])(?=.*[A-Z]))^[a-zA-Z\d]{6,12}$/
console.log(reg.test('123456')) // false
console.log(reg.test('aaaaaa')) // false
console.log(reg.test('AAAAAAA')) // false
console.log(reg.test('1a1a1a')) // true
console.log(reg.test('1A1A1A')) // true
console.log(reg.test('aAaAaA')) // true
console.log(reg.test('1aA1aA1aA')) // true

4、实现一个trim函数

//去除字符串的首尾空格
const trim = (str) => {
    
    
  return str.replace(/^\s*|\s*$/g, '')    
}
trim(" sdnkaf ") //"sdnkaf"
// 提取非空格法
const trim1 = (str) => {
    
    
 return str.replace(/^\s*(.*?)\s*$/g, '$1')    
}
trim1(" sdnkaf ")//"sdnkaf"

5、通过name获取url query参数

const getQueryByName = (name) => {
    
    
    const queryNameRegex = new RegExp(`[?&]${
      
      name}=([^&]*)(&|$)`)
    const queryNameMatch = window.location.search.match(queryNameRegex)
    // 一般都会通过decodeURIComponent解码处理
	return queryNameMatch ? decodeURIComponent(queryNameMatch[1]) : ''
}
//https://editor.csdn.net/md?not_checkout=1&articleId=120011793
getQueryByName("not_checkout") //1

6、匹配24小时制时间

//判断时间time是否符合24小时制 
const check24TimeRegexp = /^(?:(?:0?|1)\d|2[0-3]):(?:0?|[1-5])\d$/
console.log(check24TimeRegexp.test('01:14')) // true
console.log(check24TimeRegexp.test('23:59')) // true
console.log(check24TimeRegexp.test('23:60')) // false
console.log(check24TimeRegexp.test('1:14')) // true
console.log(check24TimeRegexp.test('1:1')) // true

7、检测URL前缀

//检查一个url是否是http或者https协议头
const checkProtocol = /^https?:/
console.log(checkProtocol.test('https://juejin.cn/')) // true
console.log(checkProtocol.test('http://juejin.cn/')) // true
console.log(checkProtocol.test('//juejin.cn/')) // false

8、检测中文

//检测字符串str是否是都由中文组成
const checkChineseRegex = /^[\u4E00-\u9FA5]+$/
console.log(checkChineseRegex.test('前端胖头鱼'))//true
console.log(checkChineseRegex.test('1前端胖头鱼'))//false
console.log(checkChineseRegex.test('前端胖头鱼2'))//false

9、匹配手机号

//检测一个字符串是否符合手机号的规则
//手机号本身是有时效性的,各大运营商有时候会推出新的号码,所以我们的正则也具有时效性,需要及时补充
//具体规律可以查看 中国大陆移动终端通信号码
const mobileRegex =
            /^(?:\+?86)?1(?:3\d{3}|5[^4\D]\d{2}|8\d{3}|7(?:[235-8]\d{2}|4(?:0\d|1[0-2]|9\d))|9[0-35-9]\d{2}|66\d{2})\d{6}$/;
        console.log(mobileRegex.test("18379867725"));//true
        console.log(mobileRegex.test("123456789101"));//false
        console.log(mobileRegex.test("+8618379867725"));//true
        console.log(mobileRegex.test("8618379867725"));//true

10、英文单词加前后空格

//字母汉字组成的字符串,用正则给英文单词加前后空格。
//如:you说来是come,去是go => you 说来是 come ,去是 go 例子
console.log("you说来是come,去是go".replace(/\b/g, " ")); // you 说来是 come ,去是 go 

11、判断版本号

//要求版本号必须是X.Y.Z格式,其中XYZ都是至少一位的数字
const versionRegexp = /^(?:\d+\.){2}\d+$/;
        console.log(versionRegexp.test("1.1.1"));//true
        console.log(versionRegexp.test("1.000.1"));//true
        console.log(versionRegexp.test("1.000.1.1"));//false

猜你喜欢

转载自blog.csdn.net/qiaoqiaohong/article/details/120011793
今日推荐