参考资料:
1.正则表达式
正则表达式,全称“Regular Expression”,在代码中常简写为regex、regexp或RE。正则表达式,就是用某种模式去匹配一类字符串的公式。
1. 显式定义(构造函数)
let 变量名 = new RegExp("正则表达式模式");
2. 隐式定义(字面量)
let 变量名 = /正则表达式模式/
2.正则表达式常用方法
1.test
正则去匹配字符串,如果匹配成功就返回真,匹配失败返回假
写法:正则.test(字符串)
如:
var str='abcdef';
var re=/b/;
console.log(re.test(str)); // ture
比如找出-
var str='abcdef';
var re=/-/;
console.log(re.test(str)); // false
2.search
正则去匹配字符串,如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回-1
写法:字符串.search(正则)
如:
var str="abcdef";
var re=/b/;
console.log(str.search(re)); // 返回1
var re=/w/;
console.log(str.search(re)); // 返回-1
var re=/B/;
console.log(str.search(re)); // 返回-1
3.match
正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null
写法:字符串.match(正则)
比如找出数字
var str="dgfhfgh254bhku289fgdhdy675";
var re=/\d+/;
console.log(str.match(re)); // 输出[ '254', '289', '675' ]
比如找出-
var str="dgfhfgh254bhku289fgdhdy675";
var re=/-/;
console.log(str.match(re)); // null
4.replace
正则去匹配字符串,匹配成功的字符被新的字符串替换
replace的写法:字符串.replace(正则,新字符串)
var str="aaa";
var re=/a/;
var strNew=str.replace(re,"b");
console.log(str); // 输出aaa
console.log(strNew); // 输出baa
5.exec
正则去匹配字符串,
如果匹配成功,就返回匹配成功的数组,
index:表示第一个匹配的字符在原字符串中的位置,
input:表示原字符串,
groups:表示当初中命名的分组时匹配到的分组对象;
如果匹配不成功,就返回null
写法:正则. exec(字符串)
比如找出数字
var str="dgfhfgh254bhku289fgdhdy675";
var reg=/\d+/;
console.log(reg.exec(str));
比如找出-
var str="dgfhfgh254bhku289fgdhdy675";
var reg=/-/;
console.log(reg.exec(str));
3.常用元字符
\d匹配数字,相当于[0-9]
\D匹配非数字,相当于[^0-9]
\w匹配字母或数字或汉字或下划线
\W匹配任意不是字母、数字、汉字或下划线的字符
\s匹配任意的空白符,如空格、换行符、制表符等
\S匹配任意不是空白符的字符
.(点号)匹配除了换行符以外的任意字符
[...]匹配方括号中的所有字符
[^...]匹配非方括号中的所有字符
4.正则表达式连接符-
[0-9]匹配数字,等价于\d
[a-z]匹配英文小写字母
[A-Z]匹配英文大写字母
[0-9a-zA-Z]匹配数字或英文字母
5.限定符
+重复1次或更多次
*重复0次或更多次(任意次数)重复0次或1次(最多1次)
{n}重复n次
{n,}重复n次或更多次(最少n次)
{n,m}重复n到m次
6.定位符
^限定开始位置的字符
$限定结尾位置的字符
\b限定单词(字)边界的字符
\B限定非单词(字)边界的字符
7.修饰符
g:global 全文搜索,不添加,搜索到第一个匹配停止
i: ignore case 忽略大小写,默认大小写敏感
m:multiple lines 多行搜索
8.特殊转义符
正则特殊转义符
\f 匹配换页符
\n 匹配换行符
\r 匹配回车符
\t 匹配制表符
\v 匹配垂直制表符
\\ 匹配\
\" 匹配 "
\' 匹配 '
9.优先级顺序
\转义符
()、(?:)、(?=)、[]圆括号或方括号
*、+、?、{n}、{n,}、{n,m}限定符
^、$、lb、\B位置和顺序
| 选择符,“或”运算