正则梳理

1在线工具:https://regexper.com/
\d数字 {4}数量 [ ]或者 ^开头 $结尾 ()分组$1,2,3代表小括号分出的组 \b单词边界 / /转义
2.regexp对象
字面量

var reg=/ \bis\b / g 全局 / /代表定义一个正则表达式 a.replace(reg,'IS')

构造函数
var reg=new RegExp('\bis\b','g') //接受俩参数,1.字符串 正则表达式的文本 2.字符串'g' 'i'
忽略大小写 'm'多行搜索
3元字符
原意文本字符
abc123
元字符(是在正则表达式中有特殊含义的非字母字符)
*+?$^.|(){}[]
\b匹配一个单词边界
\水平制表符 \v垂直制表符 \r回车符 \0空字符 \f换页符 \cX与X对应的控制字符
字符类取反^
1不是字符a或b或c的内容
范围类 -闭区间 连续字符
[a-zA-Z]a-z的任意字符
预定义类
.除了回车换行外的所有字符
\d数字字符
\D 非数字字符
\s空白符
\S非空白符
\w单词字符
常用的边界匹配字符
^以...开始
$以...结束
\b \B单词边界 非单词边界
量词
?出现0次或1次(最多一次)
+至少要出现一次
*出现任意次
{n}出现n次
{n,m}出现 n次到m次
{n,}至少出现n次
贪婪模式
尽可能多的匹配 /\d{3,6}/g/按6匹配
'123456789'.match(/\d(3,5)?/g/)非贪婪模式 ['123','456','789']

分组
()(aaa){3}

|(/by(on|ca)sper)/)
反向引用
$ eg:a.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$1')
忽略分组
不希望捕获某些分组 只需要在分组内加上?:就可以
(?:Byron).(ok)
前瞻
符合和不符合特定断言称为肯定/正向匹配和否定/负向匹配
【正则梳理】前瞻 (?=) (?!)
js不支持后顾
.replace(/\w(?=\d)/g,X)断言不参与匹配内容
对象属性
igm
lastIndex下一次搜索的开始位置 上次匹配的结果的最后一个字符的下一个
source正则表达式的文本字符串(文本内容部分)
test方法
正则表达式在调用时 会改变lastindex
exec(str)方法
非全局调用:
返回数组
lastindex不生效 匹配文本最后一个字母的下一位下标
ret=reg3.exec(ts)
ret.index 匹配结果从字符串的第几位开始的
ret 0:与正则相匹配的文本
1:符合第一个分组的内容
字符串对象的方法
.search() 返回1或者-1 .search(1) .match(reg)找和正则相匹配的文本 返回数组 .index .input .split(,/reg) .replace(reg,rstr) .replace(reg,func)

fuc含义
1.匹配的字符串,match
2.正则表达式分组的内容
3.匹配项在字符串中的index
4.原字符串origin
'a1b2c3d4e5'.replace(/\d/g,function(match){ return parseInt(match)+1 })

  1. abc ?

    推荐阅读