下· 1. 数字价格千分位分割,例:将123456789变成123,456,789
'123456789'.replace(/(?!^)(?=(\d{3})+$)/g, ',') // 123,456,789
- 手机号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
- 验证密码的合法性
规则:密码长度是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
- 提取连续重复的字符
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"]
- 检测中文
const checkChineseRegex = /^[\u4E00-\u9FA5]+$/
console.log(checkChineseRegex.test('这是中文')) // true
- 匹配手机号
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
- 匹配日期格式
规则:要求匹配(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
- 校验数字
const reg = /^\d*$/ // 数字
reg.test(123wd)
- 下划线转驼峰
// 首字母转小写
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())
}
- 匹配非中文,数字和大写字母
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
})
- 空格转换为换行符
let value= '川AAK215 瑜AZ9565'
value = value.replace(/(^\s+)|(\s+$)|\s+/g, '\t\n')
复制value后粘贴到excel中换行显示: