练习题
1.把get-element-by-id转为驼峰命名
var str = 'get-element-by-id' const reg = /-\w/g const newStr = str.replace(reg, word => { console.log(word, 'word12') return word.substring(1).toUpperCase() }) console.log(newStr, 'newStr') // getElementById
2.判断电话号码
function isPhone(tel) { var regx = /^1[34578]\d{9}$/; return regx.test(tel); }
3.查找反复单词
var str = "Is is the cost of of gasoline going up up";var patt1 = /\b([a-z]+) \1\b/ig;document.write(str.match(patt1));\1 指定第一个子匹配项 back reference 反向参考~~~~
4.abcdebbcde匹配叠词(考查反向援用)
https://www.cnblogs.com/guorange/p/6693168.html源字符串:abcdebbcde正则表达式:([ab])1对于正则表达式“([ab])1”,捕捉组中的子表达式“[ab]”尽管能够匹配“a”或者“b”,然而捕捉组一旦匹配胜利,反向援用的内容也就确定了。如果捕捉组匹配到“a”,那么反向援用也就只能匹配“a”,同理,如果捕捉组匹配到的是“b”,那么反向援用也就只能匹配“b”。因为前面反向援用“1”的限制,要求必须是两个雷同的字符,在这里也就是“aa”或者“bb”能力匹配成功。~~~~
5.给定字符串str,查看其是否合乎如下格局
XXX-XXX-XXXX 其中X为Number类型
function matchesPattern(str) { return /^(\d{3}-){2}\d{4}$/.test(str);
6、JS实现千位分隔符
前端没有后顾,所以只解说前瞻
首先咱们要了解正则的解析程序 正则解析程序->从左向右,向左边看就是前瞻
?=
正向前瞻 例如: /b(?=a)/.test('bab') 看前瞻的局部是否是a //true
?!
负向前瞻 /b(?!a)/.test('bb') 看前瞻局部是不是非a //true
const number = 123456789123 var regx = /\d{1,3}(?=(\d{3})+$)/g // document.write((number + '').replace(regx, '$&,')) // $&示意与regx相匹配的字符串123 456 789 最初的123 // 没有被匹配上是因为?= 前瞻的时候没有3位数~~~~字 document.write( (number + '').replace(regx, function (world) { //这里的world就是下面的$& 即 123 456 789 return world + ',' }), ) ~~~~