三大作用
1、给定的字符串是否符合正则表达式的过滤逻辑(匹配)
2、可以通过正则表达式,从字符串中获取我们想要的特定部分(提取)
3、强大的字符串替换能力(替换)
三大元素:元字符、修饰符、量词
三大核心点
定锚点、去噪点、取数据,这三点是整个正则处理过程中的灵魂,
它贯穿整个正则撰写过程。
() [] {}区别
-
()是为了提取匹配字符串的,表达式中有几个()就有几个相应的匹配字符串。
-
[] 是定义匹配的单个字符的范围,比如[a-zA-Z0-9]表示相应位置
的字符要匹配英文字符或数字。 -
{} 一般是用来匹配的长度,格式为{n}、{n,m}、{n,}
(ab){0,12}? 表示匹配0到12次但尽可能少
?
1、?匹配0次或1次。
2、匹配修饰符,当该字符跟在任何一个其他限制符
(* 、+、?、 {n}、 {n,}、 {n,m})后面时,
匹配模式为非贪婪模式。非贪婪模式尽可能少的匹配所搜索的字符串,
而默认的贪婪模式则尽可能多的匹配所搜索的字符串
?断言
// 前瞻:
exp1(?=exp2) 查找exp2前面的exp1
// 后顾:
(?<=exp2)exp1 查找exp2后面的exp1
// 负前瞻:
exp1(?!exp2) 查找后面不是exp2的exp1
// 负后顾:
(?<!exp2)exp1 查找前面不是exp2的exp1
例子
(abc|bcd|cde) 表示这一段是abc、bcd、cde三者之一,顺序也必须一致
(abc)*.test('') * 出现0次或多次 所以出现不出现都是ture
/(https?:\/\/)/g.test('http://') ?表示0次或1次
var str = 'Anna is {age} years old,Bob is {age} years old too';
var expr = /{.*}/g;
var expr = /{.*?}/g;
// 满足条件,就不再匹配了
console.log(str.replace(expr, '13'))