常用的一些正则表达式

为数字加上千分号
var string1 = "12345678",
string2 = "123456789";
reg = /(?!^)(?=(\d{3})+$)/g; // 前面不是起始位置且后面有3个数字的位置后+逗号
var result = string1.replace(reg, ',')
console.log(result); 
// => "12,345,678"

result = string2.replace(reg, ',');
console.log(result); 
// => "123,456,789"

获取匹配到的字段

例如获取类型的Object.prototype.toString.call(),想把他封装成一个函数,我们可以这样做

let type = (val)=>{
	let reg = /\s(\w+)/
	reg.test(Object.prototype.toString.call(val))
	return val?RegExp.$1: ''
}
type([]) // Array

匹配和上一次匹配到完全一样的字符

例如校验日期,会发生一种情况

var regex = /\d{4}(-|\/|\.)\d{2}\1\d{2}/;
regex.test(2020-01-01) // true
regex.test(2020-01/01) // true

这两种情况也会匹配通过,我们怎么才可以校验匹配到的符号是否一致呢
可以通过这种方式

var regex = /\d{4}(-|\/|\.)\d{2}\1\d{2}/;
regex.test(2020-01-01) // true
regex.test(2020-01/01) // false

注意里面的\1,这个就等于分组一所匹配到的值,如此类推,\2\3 就等于第二和第三组匹配到的值了。


驼峰互转

驼峰转换是常见的需求,转驼峰函数

function toCamelCase(str='',isUpper= false) {
	if(!str || typeof str !=='string') return str
 	let reg = new RegExp(`(?:${isUpper?'^|':''}-)(\\w)`,'g')
    return str.replace(reg,function(all,target){
        return target ? target.toUpperCase() : ''
    })
}

toCamelCase('ab-cd-ef-gh') // abCdEfGh
toCamelCase('ab-cd-ef-gh',true) // AbCdEfGh

驼峰转连接符小写字符串

function toHyphenate (str='',char='-'){
	if(!str || typeof str !=='string') return str
	return str?str.replace(/(\B[A-Z])/g,'-$1').toLowerCase() : ''
}
toHyphenate('AbCdEfGh') // ab-cd-ef-gh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值