正则表达式 RegExp 对象
- 概念:通过特定符号组成表达式,并通过该表达式匹配字符串。
- 好处:方便搜索、匹配字符串。
- 缺陷:匹配、搜索速度不高。(复杂的表达式,解析效率不高)
- 主要用于搜索、验证、匹配(或特殊环境使用)
- 写法:/ /
[ ]
方括号:括号里的内容任取其一
表达式:
- abc查找方括号之间的任何字符。
- ^abc 查找任何不在方括号之间的字符。
- [0-9] 查找任何从 0 至 9 的数字。
- [a-z] 查找任何从小写 a 到小写 z 的字符。
- [A-Z] 查找任何从大写 A 到大写 Z 的字符。
- (red|blue|green) 查找任何指定的选项。
匹配次数:
- * 星号,匹配 0-n 次
- + 加号,匹配 1-n 次
- ? 问号,匹配 0-1 次
-
{ } 花括号,指定匹配次数; {0,6}或{,6}——0~6次;{6,}——至少6次;{6}——只能6次
let pattern=/c[abcd]t/; let str='cat'; console.log(pattern.test(str)); // true; test关键字,方法
完整匹配:/^...$/ ^:以^开头; $:以$结尾。
let pattern=/^c[abcd]+t$/; let str='cat'; console.log(pattern.test(str)); // true;
修饰符
- i : 对大小写不敏感
- // let pattern=/^c[abcd]+t$/i;
- g : 全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
元字符
有特殊含义的字符
-
. 一个点,查找单个字符,除了换行和行结束符。
-
\w查找单词字符(数字、字母、下划线)。
-
\W 查找非单词字符。
-
\d 查找数字。0-9
-
\D 查找非数字字符。
-
\s 查找空白字符(空格、换行...)。
-
\S 查找非空白字符。
-
\b 匹配单词边界。
-
\B 匹配非单词边界。
-
\n 查找换行符。
正则方法
-
exec:检索字符串中指定的值。返回找到的值,并确定其位置。
let pattern=/love/g; let str="I love Js,I love Js,I love Js"; console.log(pattern.test(str)); //找到第一个love patt.lastIndex=0; // 重置上一次输出结果 console.log(pattern.test(str)); //加上g,找到第二个love;不加上g,还是第一个love
lastIndex:RegExp 对象属性;一个整数,标示开始下一次匹配的字符位置。
支持正则表达式的String对象的方法
-
split:把字符串分割为字符串数组。
let patt=/love/g; let str="I love Js,I love Js,I love Js"; console.log(str.split('')); console.log(str.split(/\s+\));
-
search:检索与正则表达式相匹配的值。忽略g标记,只返回第一次匹配的值。
let pattern=/love/g; let str="I love Js,I love Js,I love Js"; console.log(str.search(patt));
-
match:找到一个或多个正则表达式的匹配。没有g,输出第一次匹配的值;加上g,所有匹配的值
let pattern=/love/g; let str="I love Js,I love Js,I love Js"; console.log(str.match(patt));
-
replace:替换与正则表达式匹配的子串。加上g,全部换掉。
let pattern=/love/g; let str="I love Js,I love Js,I love Js"; console.log(str.replace(patt,'我'));