常用正则表达式

下· 1. 数字价格千分位分割,例:将123456789变成123,456,789

'123456789'.replace(/(?!^)(?=(\d{3})+$)/g, ',') // 123,456,789
  1. 手机号3-4-4分割
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(18000000000)) // 180-0000-0000
console.log(formatMobile(1800000000)) // 180-0000-000
  1. 验证密码的合法性
    规则:密码长度是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
  1. 提取连续重复的字符
const collectRepeatStr = (str) => {
  let repeatStrs = []
  const repeatRe = /(.+)\1+/g
  // 很多时候replace并不是用来做替换,而是做数据提取用
  str.replace(repeatRe, ($0, $1) => {
    $1 && repeatStrs.push($1)
  })
  
  return repeatStrs
}
console.log(collectRepeatStr('12323454545666')) // ["23", "45", "6"]
  1. 检测中文
const checkChineseRegex = /^[\u4E00-\u9FA5]+$/
console.log(checkChineseRegex.test('这是中文')) // true
  1. 匹配手机号
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
  1. 匹配日期格式
    规则:要求匹配(yyyy-mm-dd、yyyy.mm.dd、yyyy/mm/dd),例如2021-08-22、2021.08.22、2021/08/22 可以不考虑平闰年
const checkDateRegexp = /^\d{4}([-\.\/])(?:0[1-9]|1[0-2])\1(?:0[1-9]|[12]\d|3[01])$/

console.log(checkDateRegexp.test('2021-08-22')) // true
console.log(checkDateRegexp.test('2021/08/22')) // true
console.log(checkDateRegexp.test('2021.08.22')) // true
console.log(checkDateRegexp.test('2021.08/22')) // false
  1. 校验数字
const reg = /^\d*$/ // 数字
reg.test(123wd)
  1. 下划线转驼峰
// 首字母转小写
function transName(arr) {
    let res = arr.map(e => {
        let items = e.split('-').map((item, index) => {
            if (index) {
                let first = item.substring(0,1)
                let rest = item.substring(1)
                return first.toUpperCase()+rest
            }else{
                return item.toLowerCase()
            }
        })
        return items.join('')
    })
    return res
}
// 首字母不处理
function turnName(str){
    return str.replace(/-[a-zA-Z]/g,match=>match.replace('-','').toUpperCase())
}
  1. 匹配非中文,数字和大写字母
var str = '川AAK215 瑜AZ9565%%%'
// 匹配非数字
const regNo = /[^0-9A-Z]/g
str.replace(regNo,'') // AAK215AZ9565
str.match(regNo) //  ['川', ' ', '瑜', '%', '%', '%']
// 匹配非中文
const regChinese = /[^\u4e00-\u9fa5|,]+/g
str.replace(regChinese ,'') // '川瑜'
str.match(regChinese) //  ['AAK215 ', 'AZ9565%%%']
// 匹配非中文,数字和大写字母或逗号
const reg = /[^0-9A-Z\u4e00-\u9fa5|,]+/g
str.replace(reg,'') // '川AAK215瑜AZ9565'
str.match(reg) // [' ', '%%%']

// 替换中文为逗号加中文
str.replace(/([^\u0000-\u00FF],+)/g, function (word, t1, index) {
	return index ? ',' + word : word
})
  1. 空格转换为换行符
	let value= '川AAK215 瑜AZ9565'
    value = value.replace(/(^\s+)|(\s+$)|\s+/g, '\t\n')

复制value后粘贴到excel中换行显示:
复制后粘贴到excel中显示如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值