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 由此结束
\b 单词边界 word boundary
\B 非单词边界
前瞻
\w(?=\d)判断一个字符,后面是否是数字,如果是,匹配该字符
比较\w\d这个是匹配字符和数字
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