正则常用表达式

正则常用表达式

数字价格千分位分割

1
2
3
function numSplit(str) {
return str.replace(/(?!^)(?=(\d{3})+$)/g, ','); // 123,456,789
}

补充小数千分位支持

1
2
3
4
const formatNum = (numStr) => {
const reg = new RegExp(`(?!^)(?=(\\d{3})+${numStr.includes('.') ? '\\.' : '$'})`, 'g')
return numStr.replace(reg, ',')
}

手机号3-4-4分割

1
2
3
4
function formatMobile(mobile) {
let mobileReg = /(?=(\d{4})+$)/g;
return mobile.replace(mobileReg, '-');
}

将字符串首字母转化为大写,剩下为小写

1
2
3
4
const capitalize = (string) => {
const capitalizeRegex = /(?:^|\s+)\w/g
return string.toLowerCase().replace(capitalizeRegex, (match) => match.toUpperCase())
}

将字符串驼峰化

  1. foo Bar => fooBar
  2. foo-bar—- => fooBar
  3. foo_bar__ => fooBar
    1
    2
    3
    4
    5
    6
    const camelCase = (string) => {
    const camelCaseRegex = /[-_\s]+(.)?/g
    return string.replace(camelCaseRegex, (match, char) => {
    return char ? char.toUpperCase() : ''
    })
    }

实现一个trim函数

1
2
3
4
5
6
7
8
// 去除空格法
const trim = (str) => {
return str.replace(/^\s*|\s*$/g, '')
}
// 提取非空格法
const trim = (str) => {
return str.replace(/^\s*(.*?)\s*$/g, '$1')
}

表单验证常用正则

  • 用户名正则

    1
    2
    3
    4
    //用户名正则,4到16位(字母,数字,下划线,减号)
    var uPattern = /^[a-zA-Z0-9_-]{4,16}$/;
    //输出 true
    console.log(uPattern.test("caibaojian"));
  • 密码强度正则

    1
    2
    3
    4
    //密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
    var pPattern = /^.*(?=.{6,})(?=.*d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;
    //输出 true
    console.log("=="+pPattern.test("caibaojian#"));
  • 整数正则

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //正整数正则
    var posPattern = /^d+$/;
    //负整数正则
    var negPattern = /^-d+$/;
    //整数正则
    var intPattern = /^-?d+$/;
    //输出 true
    console.log(posPattern.test("42"));
    //输出 true
    console.log(negPattern.test("-42"));
    //输出 true
    console.log(intPattern.test("-42"));
  • 数字正则(可以是整数也可以是浮点数)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    //正数正则
    var posPattern = /^d*.?d+$/;
    //负数正则
    var negPattern = /^-d*.?d+$/;
    //数字正则
    var numPattern = /^-?d*.?d+$/;
    console.log(posPattern.test("42.2"));
    console.log(negPattern.test("-42.2"));
    console.log(numPattern.test("-42.2"));
  • Email正则

    1
    2
    3
    var ePattern = /^([A-Za-z0-9_-.])+@([A-Za-z0-9_-.])+.([A-Za-z]{2,4})$/;
    //输出 true
    console.log(ePattern.test("99154507@qq.com"));
  • 手机号正则

    1
    2
    3
    var mPattern = /^1[34578]d{9}$/;
    //输出 true
    console.log(mPattern.test("15507621888"));
  • To Learn More