Bootstrap

JS正则表达式(RegExp)

1.关于正则表达式的作用:
用于匹配字符或者有特殊搭配原则的字符。
2.正则表达式的创建方式:

① var reg = //;   //注释中间写我所要的匹配原则
例如:判断字符串中是否有符合规则的片段abc
var reg = /abc/;
var str = "abcd";
reg.test(str); //true

②var reg = new RegExp(“”);//括号中书写我的匹配原则

var reg = new RegExp(“abc”);
var str = "abcd";
reg.test(str);  //true

3.正则表达式修饰符;
在这里插入图片描述

1.示例 i (匹配原则不区分大小写)//
    var reg = /ABCD/i; 
    var str = "abcd";
    console.log(reg.test(str));    //true 
2.示例 g(全局范围内进行查找)//
    var reg = /ab/;
    var str = ”ababababab“;
    console.log(str.match(reg));      //["ab"]

    var reg = /ab/g;
    var str = "ababababab";
    console.log(str.match(reg));     //["ab","ab","ab","ab","ab",]
3.示例 m (多行匹配) //
    var reg = /abc/m;
    var str = "abc123\n213adabc";  //\n使得字符串变为两行
    console.log(str.match(reg));  //true
    

4.方括号:
在这里插入图片描述

示例1: [0-9]
var reg = /[0-9][0-9][0-9]/;
    var str = "149";
    console.log(reg.test(str))  //true
示例2:(blue|red|yellow)
 var reg = /(1|2|3)(1|2|3)(1|2|3)/;
    var str = "231";
    console.log(reg.test(str))  //true
示例3:[^a-z]
 var reg = /[^0-9][^0-9][^0-9]/;
    var str = "kan";
    console.log(reg.test(str))  //true

5.元字符
在这里插入图片描述在这里插入图片描述

示例1: \w 
    var reg = /\w\w\w/;
    var str = "kan";
    console.log(reg.test(str))  //true
    console.log(str.match(reg))  //"kan"
示例2: \d
    var reg = /\d\d\d/;
    var str = "246";
    console.log(reg.test(str))  //true
    console.log(str.match(reg))  //"246"
示例3: \b
    var reg = /m\b/g;
    var str = "moonm m m"
    console.log(reg.test(str))  //true
    console.log(str.match(reg))  // ["m","m","m"]
示例4:\uxxxx
  var reg = /[\u4e00-\u9fa5][\u4e00-\u9fa5][\u4e00-\u9fa5]/;   //unicode 汉字编码范围(0x4e00,0x9fa5])
   var str =  "康家豪";
   console.log(reg.test(str));
   console.log(str.match(reg))  

6.量词
在这里插入图片描述
注意: n+,n*符合贪婪匹配原则,即总是满足最大的个数。

示例1: n+
  var reg = /[\d]+/g;
  var str = "1234125213";
  console.log(reg.test(str));  true
  console.log(str.match(reg))   “1234125213”

实例2:n{x}
 var reg = /[\d]{3}/g;
  var str = "123456789";
  console.log(reg.test(str));
  console.log(str.match(reg))  //["123","456","789"]
  实例3:^
  var reg = /^0a/g;
  var str = "0abidaa";
  console.log(reg.test(str));
  console.log(str.match(reg))    //"0a"
  实例4:?=n
   var reg = /a(?=123)/g;
   var str = "a123456a";
   console.log(reg.test(str));  
   console.log(str.match(reg))  //["a"] 

7.reg方法和string方法
在这里插入图片描述

reg方法:
 var reg = /acb/;
 var str = "acb";
 console.log(reg.test(str));  //true 
 console.log(reg.exec(str));  //["acb"],index 0;
 
string方法:
 var reg = /acb/;
 var str = "acb";
 console.log(str.match(reg))   //“acb”
 

重点 replace方法;
区别:

var str = "aa";
console.log(str.replace("a","b"));  //"ba"

但是如果运用正则表达式:
var str = "aa";
var reg = /a/g;
var str1 = str.replace(reg,"b");
console.log(str1)   //"bb"

8.常见的一些正则表达式习题:
①写一个正则表达式,检验一个字符串首尾是否含有数字

var reg = /^\d | \d$/g;  //以数字开头 或者 以数字结尾
var str = "abc1";
console.log(reg.test(str))

②匹配形如xxyy形式的字符

var reg = /(\w)\1(\w)\2/g;    //  \1 表示引用第一个数的子表达式  \2以此类推
var str = "aabbccdd";
console.log(str.match(reg));  ["aabb","ccdd"]

③将xxyy模式的字符串转换为yyxx

 var reg = /(\w)\1(\w)\2/g;
 var str = "aabb";
 console.log(str.replace(reg,"$2$2$1$1")); //bbaa   //$1表示引用第一个子表达式

④//把the-first-name 转换为theFirstName

    var reg = /-(\w)/g;     //即把-f 转换为 F
    var str = "the-first-name";

   console.log(str.replace(reg,function($,$1){
         return $1.toUpperCase();
    }))   
   //function中 第一个参数$匹配全局,即正则表达式要匹配的结果str;$1参数为第一个子表达式的内容

⑤把1000000000000表示为1.000.000.000.000

 var reg = /(?=(\B)((\d{3})+$))/g;  
 //将以三个数字结尾的空找出来替换为“.”
 //之后并且不能是字符边界
 var str = "1000000000000";

 console.log(str.replace(reg,"."))  //1.000.000.000.000

⑥长度8-10位的用户密码(字母开头,数字,下划线)

var reg = /^[A-Za-z]\w{7,9}$/;
 var str = "kjh__11111a"
 console.log(reg.test(str));
;