乐趣区

关于正则表达式:前端正则练习题

练习题
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 实现千位分隔符

前端没有后顾,所以只解说前瞻
首先咱们要了解正则的解析程序 正则解析程序 -> 从左向右,向左边看就是前瞻

    1. ?= 正向前瞻 例如:/b(?=a)/.test(‘bab’) 看前瞻的局部是否是 a   //true
    1. ?! 负向前瞻 /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 + ','
              }),
            ) ~~~~
    退出移动版