JavaScript正则表达式学习笔记

这篇文章主要是记录一些正则表达式的知识,并没有学习过程,主要用来记录和方便查找,如果要学习的话必须多训练

 

 https://regexper.com/  正则图形工具

 

正则表达式特殊意义字符:

" * " 表示在前面的字符 可出现0-n次

 

“ + ” 表示前面的字符 可出现  1-n次

 

“ ?”表示前面的字符 可出现0-1次

 

“ [  ] ” 方括号表示选择器,  根据内容的不同选择所需的字符串

  例如: [ abc ] 表示字符串中出现a或b或c

      [a-zA-Z] 表示字符串中出现字母表中的一个字符

      

“{}” 放在字符后表现出现次数

  例如: "a{1,4}"表示a出现1-4次

    ”b{3,}“表示b出现至少3次

  注意:在使用正则表达式修改字符串时,正则表达式默认是倾向于匹配更多的项,如果可以匹配4次就不匹配1次,这个叫贪婪模式

      如果要使它倾向于匹配更少的项,在{}后加?, 例如"a{1,4}?"

 

“()” 表示编组,例如(abc)? 表示“abc”这个字符串连续出现 0 - 1 次;

    编组例子:"2018-9".replace(/(?:d{4})-(d)/, "$1 months");

    结果是:9 months

    使用(?:)取消它的编组序号

 

"  @ "  

 

"  ^  "  start of line 由此开头 

  当出现在[]方括号里时表示取反

    例如:   [^abc] 表示不存在abc中任意一个

 

" $ " end of line 由此结束

 

 

    单词边界  word boundary

B  非单词边界

 

 

前瞻

w(?=d)判断一个字符,后面是否是数字,如果是,匹配该字符

比较wd这个是匹配字符和数字

 


JavaScript正则

由 /  开头和结尾

例如

/[a-z]./  引号加不加无所谓,/一定要加

在结尾处插入字符实现不同功能要求

i: 是否大小写敏感

m :多行处理,即不把换行字符当普通字符处理,从而处理多行

 

string.replace(//, "");第一个是参数是正则表达式,第二个是替换的内容

替换内容:"$1" 美元符号加数字表示在正则表达式用()分组的东西


更新于2021/08/19

承接上面一句话,$number的作用:

$number从$1开始,如上面所说是表示再括号中的分组(?:)除外,那么应该如何使用呢,它可以用来代替一些比较复杂的前置验证或后置验证

例如仅仅改变时间格式中的天数:

  let date = '0-0-0';
  let day = '12'
  let month = '01';
  let year = '2013';
  let res;
  // 在这里表示一个时间的初始状态
  if (!new RegExp('d+-d+-d+').test(date)) {
    // 测试是否符合时间格式(比较宽松的检测)
    res = date.replace(/(d+)-(d+)-(d+)/, `$1-$2-${day}`);
    res = res.replace(/(d+)-(d+)-(d+)/, `$1-${month}-$3`);
    res = res.replace(/(d+)-(d+)-(d+)/, `${year}-$2-$3`);
  }
  console.log(res);

最后打印的是 2013-01-12

 

 

 

 

原文地址:https://www.cnblogs.com/incredible-x/p/9630254.html