正则的学习

正则的学习

创建正则的方式:

  • 采用构造函数:
let reg = new RegExp;
console.log(reg);//   /(?:)/
console.log(typeof reg);// object
  • 字面量方式创建:
<script>

let reg3 = /test/; //会区分test的大小写
let reg3 = /test/i; //不区分test的大小写(TesT这样也是可以的)
let str = 'testtest_123test456'
console.log(reg2.test(str));//true  用test()方法检测str中是否有test字符串,有则返回true

</script>

正则的一些简单小语法:

let reg = /a|b/;
//表示检验a或b字符
let reg2 = /[ab]/
//和上面是等价的,[]也表示或的意思
let reg3=/\d/; //匹配数字 相当于[0-9]
let test2=reg3.test(str);
console.log(test2);
let reg5=/\D/; //取反,除了数字以外任意字符;
console.log(/\D/.test(t_str));//true

let reg6=/\w/; //匹配只要是数字 字母 下划线,都返回true;
let reg7=/\W/; //匹配非数字 非字母 非下划线;
// 换行符: \r \n 都是换行符
// x? : 匹配只能是一个x或者没有x(0个x或1个x);
/q\d?hello/; //q和hello之间只能是一个数字或啥都没有,如果是两个数字,或者夹杂其他,就是false
  • x+ : 匹配至少1个x(>=1)

  • x* : 匹配至少0个x(>=0)

  • x{n} : 匹配x字符出现n次

  • x{n,} : 匹配x字符出现至少出现n次

  • x{n,m} : 匹配x字符出现出现n到m次 + x{0,m} : 匹配x字符出现出现最多m次

  • /[a-z]/ 检测一个字符串中是否包含任意小写字母

  • /[A-Z]/ 检测一个字符串中是否包含任意大写字母

  • /[A-z]/ 检测一个字符串中是否包含任意字母

  • /[0-9]/ 检测一个字符串中是否包含任意数字

  • /a[bcd]e/ 检测一个字符串中是否包含abe或ace或ade

  • [^] 表示: 除了

    var reg = /[^ab]/; // 规则:字符串中,除了a、b之外,还有没有其他的字符内容?var str = "acb";
    console.log(reg.test(str)); // 打印结果:true
    var reg = /[^0-9]/; // 规则:字符串中,除了数字之外,还有没有其他的内容?
    var str1 = "1991";
    var str2 = "199a1";
    console.log(reg.test(str1)); // 打印结果:false (如果字符串是 纯数字,则返回 false)
    console.log(reg.test(str2)); // 打印结果:true
    let str2=Hello World zhufeng123456abcdefzhufenzhufeng;
    //需求:匹配至少出现一次zhufeng
    console.log(/(zhufeng){1,}/.test(str2));//要给zhufeng添加(),小括号在匹配的时候,提升匹配优先级,将括号内的当作一个整体

      let reg8=/^zhufeng/;//匹配以z开头,后面紧跟hufeng
      let reg9=/zhufeng$/;//匹配以g结尾,前面是zhufen
      let reg10=/^zhufeng$/;//匹配以z开头,g结尾,中间只能是hufen
    
      //手机号匹配:
      let tel=`13678995671`;
      /^1[35789]\d{9}$/.test(tel);// [35789]意思是可以是35789中的任意一个;
      //匹配26个英文小写字母:
      let reg11=/[a-z]/;//匹配所有的26个小写字母;
      let reg12=/[A-Z]/;//匹配所有的26个大写字母;
    
      /* 转义运算符 */
      //转义: \  把那些在正则当中有特殊含义的字符,转义成没有任何含义的普通字符
      /\-/; //:把-转义成普通字符串-
      //注意: 字符串中也存在转义运算符\ 
      let str3="12345\"678\"9";
      console.log(str3.length);//11
      // 点.代表匹配除了\n \r换行以外的所有字符
      // 比如想要匹配到普通'点', 可以这样使用👉 \.
      let reg11=/[^a-z]/; // ^在中括号中是取非的意思,就是匹配除了26个小写字母以外的所有字符;
      let reg12=/[a-zA-Z0-9]/;//匹配所有的小写大写字母所有数字中的其中任意一个;
    
      let reg13=/[(123)]/; //代表的是 "("或"1"或"2"或"3"或")"; 中括号里除了 - ,其他的都是默认的进行转义(\转义符还是可以使用的);
      let reg14=/(zhu)|(feng)|(zhufeng)/; //匹配到zhu或feng或zhufeng;
    
      //验证年龄段18-65:
      let reg15 = /(1[8-9])|([2-5]\d)|(6[0-5])/; //因为中括号中只能写单个字符,所以不能写[18-65];
      // - 这个横杠只能在中括号中使用;
    
    
      /* 总结:
          量词: + * ? {} 用在要修饰的那个字符的后边,代表代表量词前边的那个字符可以出现的次数;
          (): 在匹配的时候可以提升优先级,把括号内当作是一个整体;
          ^: 代表以什么开头;
          $: 代表以什么结尾;
      
      */
    
posted @ 2021-07-09 08:49  前端小学生er  阅读(44)  评论(0编辑  收藏  举报