好用的网站
基本讲解
let str = '1234561 abcde'
let reg = /\d/g // 定义正则表达式
let reg2 = /\d/ // 不加g
console.log(str.match(reg)) // [ '1', '2', '3','4', '5', '6', '1']
console.log(str.match(reg2)) // ['1']
后面加g代表匹配多次 \d 代表数字 \w 代表字母 更多符号参考
let str = '1234561 abcde'
let reg = /\d\d/g // 两个相邻的数
console.log(str.match(reg)) // [ '12', '34', '56' ]
表达式写什么就匹配什么,里面挨着匹配的也挨着
let str = '123 abc +=-'
let reg = /[\d\w]/g // 要么是数字 要么是字母
let reg2 = /[^\d\w]/g // 不是数字也不是字母
console.log(str.match(reg)) // [ '1', '2', '3', 'a', 'b', 'c' ]
console.log(str.match(reg2)) // [ ' ', ' ', '+', '=', '-' ]
[ ] 代表里面的匹配其中一个 写在里面的是或关系 ^在 []里面是取反关系
let str = '123 1 1234 abc +=-'
let reg = /\d{3,4}/g // 匹配连续的数字 最少3个连一起 最多4个
console.log(str.match(reg)) // [ '123', '1234' ]
{m,n}不限制的话默认最多n个 n不写的话代表最多无限个 + 等价于{1,}
高级用法
let str = 'http://www.zhufengpeixun.cn/?lx=1&from=wx&b=12&c=13'
let reg = /([^?=&]+)=([^?=&]+)/g // 获取url参数
console.log(str.match(reg)) // [ 'lx=1', 'from=wx', 'b=12', 'c=13' ]
一步步来
1.先看前半部分 /([^?=&]+)/g 匹配不是 =?& 的字符串, 长度1个或更多 下面是结果
[
'http://www.zhufengpeixun.cn/',
'lx',
'1',
'from',
'wx',
'b',
'12',
'c',
'13'
]
2. /([^?=&]+)=([^?=&]+)/g 后面还要有 = 并且 = 后也要求不是 =?& 的字符串
let str = 'sfgsdfgsertdgfsdfgsertwegdsfgertewgsdfgsdg';
function getMax2(str) {
str = str.split('').sort().join('');// 把字符串进行排序
let key = '',num = 0;
str.replace(/(\w)\1*/g,function($0,$1){
console.log(arguments)
if($0.length > num){
num = $0.length;
key = $1;
}
})
return{
key,num
}
}
getMax2(str);
let str = 'ddddddeeeeeffffffgggggggggrrrsssssssstttww';
let reg = /(\w)\1+/g // \1 代表第一个括号表达式的值 +换成*也可以
console.log(str.match(reg))
/**
[
'dddddd', 'eeeee',
'ffffff', 'ggggggggg',
'rrr', 'ssssssss',
'ttt', 'ww'
]
*/
let str = '1234567892';
let reg = /(\d{1,3})(?=((\d{3})*$))/g
console.log(str.match(reg)) // [ '1', '234', '567', '892' ]
console.log(str.replace(reg,'$1,')) // 1,234,567,892
let str = 'ad as av aq';
str.replace(/(a)(\w)/g ,function($0,$1,$2){
//console.log(arguments)
console.log($0+'...'+$1+'...'+$2)
})
/**
ad...a...d
as...a...s
av...a...v
aq...a...q
*/
let str = 'ad as av aq';
let a = str.replace(/((a)(\w))/g ,'$1 +')
let b = str.replace(/(a)(\w)/g ,'$2 0')
console.log(a)
console.log(b)
/**
ad + as + av + aq +
d 0 s 0 v 0 q 0
*/