一、正则的概念

正则:规则字符串出现规律的表达式
image.png

  1. <script>
  2. /* 后面加上g,全局替换 */
  3. var reg = /傻/g;
  4. var p = "你傻呀,你怎么这么菜:你真是傻";
  5. /* repLace() */
  6. var res = p.replace(reg,"**")
  7. console.log(res)
  8. </script>

二、简单的正则

test() 获取字符串中是否包含的正则表达式匹配的字符
包含这个值返回true 不包含返回false

  1. <script>
  2. var reg = /1/;
  3. var p = "12345";
  4. console.log(res.text(p)) //ture
  5. </script>

三、api

image.png

  1. <script>
  2. /* match,search,replace,spLit */
  3. var p = "hello worldL";
  4. /* i是忽略大小写 */
  5. /* 正则表达式后面的为修饰符 */
  6. var reg = /l/ig;
  7. console.log(p.match('l'));
  8. console.log(p.match(reg));
  9. var regb = /垃圾/g;
  10. var pp = "它是垃圾,见到垃圾就要扔了";
  11. var res = (pp.replace(regb,"**"));
  12. console.log(res)
  13. console.log(pp.match(regb))
  14. </script>

四、test和g的关系

Tips:test() 方法为局部匹配而生
`用test后面不要加g``

  • lastIndex:是当前表达式匹配内容的最后一个字符的下一个位置

    1. <script>
    2. var str = "aaha";
    3. var reg = /a/g;
    4. while(reg.test(str)){
    5. console.log(reg.lastIndex)
    6. /* 1,2,4 */
    7. }
    8. console.log(reg.test(str)) // 1
    9. console.log(reg.test(str)) //2
    10. console.log(reg.test(str)) //4
    11. </script>

    五、备选字符集

  • 备选字符集:规定某一位字符的备选字符列表

  • 特点:多选一

image.png

  1. <script>
  2. var reg = /上[海,天,去]/g
  3. var str = "我要去上海,我要上去东方明珠,去上天";
  4. console.log(str.replace(reg,"**"))
  5. var regs =/中[国,共,华]/g;
  6. var strr = "中国人民共和国成立了,中共很牛逼,大中华牛逼";
  7. console.log(strr.replace(regs,"666"))
  8. </script>

5-1连号的备选字符集

  • [0-9]
  • [a-z]
  • [a-zA-Z]
  • [0-9A-Za-z]

image.png

  1. <script>
  2. var str = "2345234jRalgjowEvdsSg";
  3. var reg = /[0-9]/g;
  4. console.log(str.replace(reg,"*"));
  5. console.log(str.replace(/[a-z]/g,"*"));
  6. console.log(str.replace(/[a-zA-Z]/g,"*"));
  7. console.log(str.replace(/[0-9A-Za-z]/g,"*"));
  8. </script>

5-2预定义字符集

  • 针对常用的备选字符集提供的简化符号
  1. [0-9] \d
  2. [0-9a-zA-Z] \w_
  3. 空格 \s
  4. . 表示除换行符以外的所有字符

    六、量词

  • 量词:就是规定某一位字符出现的次数
  1. <script>
  2. {3,6} 三到六次
  3. {3,} 三次以上*/
  4. var reg = /\d{3,}/;
  5. var str = "22334fsgdgdg";
  6. console.log(reg.test(str))
  7. </script>

6-1三个数字+天

  1. <script>
  2. /* 三个数字+天
  3. 123天
  4. 4324234 天*/
  5. var reg = /\d{3,4}天/g;
  6. var p = "2323天地介绍了附件435天";
  7. console.log(p.replace(reg,"**"))
  8. </script>

6-2不确定数量的量词

  • + 1个,或1个以上 m>=1 {1,}
  • * 0个或多个 {0,}
  • ? 0,1 {0,1}

    七、贪婪属性

    image.png

    1. <script>
    2. /* 正则表达式默认是贪婪的 */
    3. var str = "123456fsjgldieg";
    4. var reg = /\d{3,6}/;
    5. console.log(str.replace(reg,"*"));
    6. /* 非贪婪模式,量词后面加? */
    7. console.log(str.replace(/\d{3,6}?/,"*"))
    8. </script>

    八、匹配位置

  • ^ 以什么开头

  • $ 以什么结尾

image.png

  1. <script>
  2. var str = " hello world";
  3. var s = "hello "
  4. var reg =/^\s+/;
  5. console.log(str.replace(reg,"*"))
  6. var r =/\s+$/;
  7. console.log(s.replace(r,"*"))
  8. </script>

九、业务