创建正则表达式
使用一个正则表达式字面量

  1. var exp = /ab+c/;

或者调用RegExp对象的构造函数

  1. var exp = new RegExp("ab+c");


捕获组

用小括号括起来的是捕获组,捕获组会出现在匹配结果中,输出顺序时从左到右
如何使用
image.png

  1. var s = '2015-10-1 , 2016-12-1, 2000-10-21'
  2. //第一种
  3. // 下面匹配中用小括号括起来的时捕获组 想要取消使用?: 如例:(?:\d{1,2})
  4. // ?<year> 为捕获组的名字
  5. var reg = /(?<year>\d{4})-(\d{1,2})-(?<day>\d{1,2})/g
  6. console.log(reg.exec(s));
  7. while(result = reg.exec(s)){
  8. console.log(result)
  9. }
  10. // 第二种
  11. // match 为匹配结果 g1到g3为捕获结果
  12. s.replace(reg,function(match,g1,g2,g3){
  13. console.log(match,g1,g2,g3);
  14. })
  15. // 第三种
  16. // $1到$3为捕获组结果
  17. s = s.replace(reg,'$1.$2,$3') ;
  18. console.log(s)

反向引用

在正则表达式中,使用某个捕获组 \捕获组编号

IMG_20200716_170703.jpg

正向断言 /反向断言

正向断言:检查某个字符后面的字符是否满足某个规则,该规则不称为匹配结果 并且不称为捕获组 使用 ?= 进行正向断言
反向断言:检查某个字符后面的字符是否不满足某个规则,该规则不称为匹配结果并且不称为捕获组 使用 ?! 进行反向断言
image.png

  1. // ?= 为正向断言
  2. var s = 'aas1dfas4dfa45sdf'
  3. var reg = /[a-z](?=\d)/; //检查字母后面是否有数字
  4. console.log(reg.exec(s))

正向断言demo

  1. // 判断密码强度
  2. function judegPWd(pwd){
  3. // var reg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#_.]).{6,12}$/;
  4. if(/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#_.]).{6,12}$/.test(pwd)){
  5. return '密码强度高'
  6. }else if(/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).{6,12}$/.test(pwd) ){
  7. return '密码轻度中'
  8. }else if(/^(?=.*[a-z])(?=.*[A-Z]).{6,12}$/.test(pwd)){
  9. return '密码强度弱'
  10. }else{
  11. return '无密码'
  12. }
  13. }
  14. console.log(judegPWd('Acbsdf'))

exec()
执行匹配,得到匹配结果
match()
使用正则表达式与字符串相比较

  1. var s = '123adf312'
  2. var reslut = s.match(/\d+/g)
  3. console.log(reslut)

search()
对正则表达式和指定字符串进行匹配搜索,返回第一个匹配项的下标

  1. var s = '123adf312'
  2. var reslut = s.search(/\d+/g)
  3. console.log(reslut)

1:text()
用来查看正则表达式与指定得字符串是否匹配,具有返回值 返回值为true和false
在全局匹配模式中,第二次匹配会接着上一次匹配结束时匹配,当发现匹配不了时,会复位重新匹配。

  1. var exp = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; //设置规则
  2. var email = document.my_f1.email.value; //获取value
  3. if(exp.test(email)){ // 使用exp.text() 会返回一个bool值,如果符合规则就返回true否则将返回false
  4. return true;
  5. alert("邮箱格式正确");
  6. }else{
  7. return false;
  8. alert("邮箱格式不正确");
  9. }

2: replace()
replace(需要匹配得模式,替换值) replace()方法将由一个替换值替换一些或所有匹配得模式后得新字符串。模式可以时字符串正则表达式,替换值可以是字符串或者一个回调函数,如果是回调函数且模式为正则表达式并且为全局匹配模式得话,会被多次调用,每次匹配都会调用。

  1. var str = 'hello word' ;
  2. var newStr = str.replace(/\s*\b[a-z]\s*/g,function(ele){
  3. return ele.toUpperCase().trim()
  4. })
  5. console.log(newSt)