练习题
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 + ','
}),
) ~~~~