高级正则实例
多选
专门为捕获组设计的exec
let str = "aaabbb"; /*可以匹配到分组的内容*/ let reg=/(a+)(?:b+)/g; let res = reg.exec(str); console.log(res[1]); let str = "cccddd"; /*可以匹配到分组的内容*/ let reg=/(c+)(d+)/g; let res = reg.exec(str); console.log(res[1]); 比较好的入门资料链接replace第二个参数是函数 let url = "https://www.baidu.com?a=1&b=2"; let reg=/([^&#?+]+)=([^&?#+]+)/g; let obj = {}; //$0 返回整体 $1返回第一个分组 $2 返回第二个分组 url.replace(reg,($0,$1,$2) => obj[$1] = $2); console.log(obj); 反向引用1 到10 console.log('aaa bbbb ffffff 999999999'.match(/(w)(?=111)(1)+/g)); 反向引用的作用通常是用来查找或限定重复、查找或限定指定标识配对 ([a-z])1{2} 忽略分组 ?: 正向断言 ?= 反向断言 ?! test 判断return false exec 查看分组 search 返回第一个匹配的索引 到不到 -1 match 返回数组 split replace //找到重复的单词 const str = 'This is the theater you you have been to to'; str.replace(/b([a-z]+)s1b/ig,(match,...args)=>{ console.log(args[0]); }) 环视(多查资料)环视,在不同的地方又称之为零宽断言,简称断言。 ?=P 可定顺序 ?!P 否定顺序 ?<=P 肯定逆序 ?<!P 否定逆序 console.log(/(http|ftp|svn|abc)ddd/g.test('httpddd')); 定锚点.*? 如果换行失败 改成 [sS]*? 正整数+一位小数 console.log(/^[+]?[1-9]d*(?:.d)?$/.test('+2.1')); 环视
正则练习题https://www.zybuluo.com/Zjmainstay/note/709093 匹配个数为偶数且不能为空 /^(..)+$/ 正则查找不包含某些字符串 ^((?!不想包含的字符串).)*$ 解释 (?!不想包含的字符串) //是匹配位置 .是任意字符 表达式(?!hede).只执行一次 匹配0次或多次:((?!hede).)* 需求:匹配每行数据中以.jpg/.jpeg/.png/.gif结尾的图片名称(含后缀) .+(?=.(jpg|jpeg|png|gig)).+ ...................................................................................................................................................................................................................................................................................................................................................................................................................... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |