JavaScript正则
表达式语法
定义规则regular
const reg=/表达式/
校验内容test
reg.test('校验字符串')
由于由两个/斜杆包起来的正则是一个对象,我们可以直接这样写直接调用test函数校验,返回值为布尔值
还有一个内置函数为exec返回一个数组,记录出现在第几个位置
元字符—边界符—量词—字符类
元字符
特殊含义的字符,匹配26个字母使用[a-z]即可
边界符
以x开头^x ,以x结尾 x$
以x开头和结尾 ^x$ 且x次数只能为1 如果是xx则为false 该匹配为精确匹配
量词
重复次数
*:>=0出现次数
+:至少有一个
?:0或1次
逗号两次不能有空格
重复模式只对离他最近的那个生效
字符类
\d代表0~9范围数字
[abc]匹配字串为abc中的一个为true只选一个, a=>true ab=>false
[a-z]26里个字母之一
[A-Z]
[0-9]
[a-zA-Z0-9]
取反
[^xxx]除了xxx其余都匹配
预定义类
简写上述的类型
修饰符
匹配模式
跟在表达式的后面,常见的有/表达式/i|g
i-ignore忽略大小写
g-global 全局匹配
替换
str.replace(正则替换规则,替换文本)
匹配模式可以挤在一起书写
捕获组
() 将匹配到的捕获组放到数组为1的位置,举个例子
{{name}} 通过捕获组+正则能够找到{{xxx}}特征的 并且将内部是xxx划分为组
匹配子模式,存储在一个编号的组中
非贪婪匹配
语法 在量词后加?
例子 a.*?b 表示尽可能少匹配 任意字符.
axxbxxb 匹配结果为axxb
贪婪匹配
a.*b
axxbxxb 匹配结果为axxbxxb 即使下一个条件b 成立了但是还是会匹配内容,直到b是最后一个
案例练习
const reg = /^[a-zA-Z0-9_-]{6,16}$/
边界符精确匹配连续的6,16位在规定范围内的字符匹配