一、创建正则表达式

1.直接量语法

  1. var reg = /a/g

2.简单的正则

  1. <script>
  2. var reg=/傻/g;
  3. var p="你傻呀,这么菜,你真是傻"
  4. /* replace */
  5. var res= p.replace(reg,"**")
  6. console.log(res) //你**呀,这么菜,你真是**
  7. </script>
  1. <script>
  2. var reg=/1/g;
  3. var p="2345";
  4. /* test() */
  5. console.log(reg.test(p)) //false
  6. /* 判断正则表达式是否在字符串里 */
  7. </script>

二、string中支持正则的api

  1. match(),replace(reg,str),search(),split()
  • 1.match()将所有匹配的字符(内容)提取出来,返回数组
  • 2.replace() 替换匹配的对象
  • 3.search() 方法用于检索字符串中指定的子字符串的位置
  • 4.split(reg) 将字符串分割成数组
  1. <script>
  2. /* match,search,replace,split */
  3. /* 正则表达式后面的为修饰符,i-->忽略大小写 g-->全局匹配 */
  4. var p="hello worldL";
  5. var reg=/l/ig; /* g:global i:ignore */
  6. console.log(p.match('l')) //["l", index: 2, input: "hello worldL", groups: undefined]
  7. console.log(p.match(reg)) // ["l", "l", "l", "L"]
  8. </script>
  1. <script>
  2. var reg=/垃圾/g;
  3. var p="它是垃圾,见到垃圾就要扔了";
  4. var res=p.replace(reg,"**")
  5. console.log(res) //它是**,见到**就要扔了
  6. console.log(p.match(reg)) //["垃圾", "垃圾"]
  7. </script>

三、正则对象的属性

test()
测试字符串中是否存在匹配正则表示式的字符串,是有没有的问题,为局部匹配而生的。返回boolean值

  1. var a ="aah";
  2. var reg = /a/g;
  3. console.log(reg.test(a)); //true
  4. console.log(reg.test(a)); //true
  5. console.log(reg.test(a)); //false
  6. console.log(reg.test(a)); //true
  7. console.log(reg.test(a)); //true
  8. console.log(reg.test(a)); //false
  9. //它从匹配字符串的第一位开始找,之后从字符串的下一个位找,遇到不匹配的再从头找
  10. //用test,最好不要加g

四、语法

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

特点:必须且只能多选一

  1. <script>
  2. /* 上海,上天,上去 */
  3. /* 备选字符集:规定某一位字符的备选字符列表
  4. 特点:多选 */
  5. var str = "上海,上天,上去,上哪"
  6. var reg = /上[海天]/g;
  7. console.log(str.replace(reg, "**")); //**,**,上去,上哪
  8. </script>

1.1备选字符的unicode号连续

  1. //一个数字
  2. [0-9]//一个小写字母
  3. [a-z]//一个大写字母
  4. [A-Z]//一个数字或字母
  5. [0-9a-zA-Z]
  1. <script>
  2. /* 连号的备选字符集
  3. [0-9]
  4. [a-zA-Z]
  5. [0-9a-zA-Z]
  6. */
  7. var str="32542546hiasghFAGJL";
  8. var reg=/[0-9]/g
  9. console.log(str.replace(reg,"*")) //********hiasghFAGJL
  10. console.log(str.replace(/[a-z]/ig,"*")) //32542546***********
  11. console.log(str.replace(/[0-9a-zA-Z]/ig,"*")) //*******************
  12. </script>

2.预定义字符集:针对常用的备选字符集提供的简化符号

  1. //一位数字
  2. [0-9] --> \d//一位数字字母或下划线
  3. [0-9a-zA-Z_] -->\w
  4. \s //1位空字符:空格,tab,换行
  5. . // 除换行外,其余所有字符
  1. <script>
  2. /* 预定义字符及:针对常用的备选字符集提供的简化符号
  3. [0-9] \d
  4. [0-9a-zA-Z] \w
  5. 空格 \s
  6. . 表示除换行符以外所有的字符
  7. */
  8. var reg=/\d/g;
  9. var str="fdgaa45622"
  10. var t="hello world"
  11. console.log(str.replace(reg,"**")) //fdgaa**********
  12. console.log(str.replace(/\w/g,"**")) //********************
  13. console.log(t.replace(/\s/g,"*")) //hello*****world
  14. console.log(t.replace(/./g,"*")) //***************
  15. </script>

3.量词:定字符集出现的次数

特点:默认一个量词,仅修饰左侧紧邻的字符集

3.1 确定数量:

  1. {m,n} -->至少m个,最多n
  2. {m,} -->m个以上
  3. {m} -->必须m
  1. <script>
  2. /* 量词:就是规定某一位字符出现的次数
  3. {3,6}
  4. {3,} //3次以上
  5. */
  6. var reg=/\d{3,}/
  7. var str="321333lhlkj"
  8. console.log(reg.test(str)) //true
  9. </script>

3.2 不确定数量

  1. ? -->一个或0
  2. + -->1个以上
  3. * -->多个或没有
  1. <script>
  2. /* + 1个,或1个以上
  3. * 0个或多个
  4. ? 0,1
  5. */
  6. var reg=/\d?/;
  7. var str="323fsfsdlj"
  8. console.log(reg.test(str)) //true
  9. </script>

贪婪模式和懒惰模式

  1. <script>
  2. var str = "123456abc";
  3. var reg = /\d{3,6}/;
  4. console.log(str.replace(reg, "*")) //*abc
  5. </script>
  1. <script>
  2. var str = "123456abc";
  3. var reg = /\d{3,6}?/;
  4. console.log(str.replace(reg, "*")) //*456abc
  5. </script>

4.选择和分组

  1. //选择
  2. | 读作"或"
  3. //分组
  4. ()
  1. 转义字符\
  2. var a ="hello\"";
  3. console.log(a); \\hello"

5.指定匹配位置

  1. 开头和结尾:^开头的xxx$结尾的xxx
  1. <script>
  2. var str=" hello world";
  3. var s="hello ";
  4. var t=" hello world "
  5. var reg=/^\s+/ //以空格开头一个或多个
  6. console.log(str.replace(reg,"*")) //*hello world
  7. //以空格开头的一个或多个字符替换成*
  8. var r=/\s+$/;
  9. console.log(s.replace(r,"*")) //hello*
  10. //以空格结尾的一个或多个字符替换成*
  11. console.log(t.replace(/^\s+|\s+$/g,"*")) //*hello world*
  12. //以空格开头和以空格结尾的一个或多个字符替换成*
  13. </script>