正则表达式(regular expression)
简介
什么是正则表达式?
正则表达式是用来处理字符串的一种规则,它只能处理字符串,既可以用于验证字符串是否符合某个规则,也可以用于把字符串中符合规则的内容捕获到(exec/match...)。
例如:
var reg=/\d+/; //\d表示0-9中的任意数字,+表示出现次数为1次或以上
var str = "you are my faiend.";
var ret = reg.test(str);
console.log(ret);
因为字符串中不存在任何数字,所以输出结果为false。
var reg=/\d+/;
var str = "2019-07-15";
reg.exec(str);
因为2019都为数字,而-不是数字,所以reg规则从左往右遇到-时就不再继续捕获了,所以reg.exec(str)的捕获结果为2019。
编写
创建方式
- 字面量创建(用两个斜杠包起来的,都是用来描述规则的元字符)
var reg = /\d+/;
- 构造函数创建(两个参数:元字符字符串,修饰符字符串)
var reg = new RegExp("\\d+"); \\注意在字符串中特殊符号\需要进行转义
组成
正则表达式由两部分组成:
- 元字符
常用元字符 1.量词元字符:设置出现的次数
-
0~n次
-
1~n次
? 0或1次
{n} n次
{n,} n+次
{n,m} n~m次
2.特殊元字符:单个或者组合在一起代表特殊的含义
\ 转义字符(普通->特殊->普通)
. 除了\n(换行符)以外的任意字符
^ 以哪一个元字符作为开始
$ 以哪一个元字符作为结束
\n 换行符
\d 0~9之间的一个数字
\D 非0~9之间的数字(大写和小写的意思是相反的)
\w 数字、字母、下划线中的任意一个字符
\s 一个空白字符(空格、制表符、换页符等)
\t 一个制表符(一个TAB键:四个空格)
x|y x或y中的一个字符
[xyz] x或y或z中的任意一个字符
[^xy] 除了x|y以外的任意字符
[a-z] 指定a-z这个范围中的任意字符,例:[0-9a-zA-Z_]等同于\w
[^a-z] 除了a~z以外的任意字符
() 正则中的分组符号
(?:) 只匹配不捕获
(?=) 正向预查
(?!) 负向预查
3.普通元字符:代表本身含义的字符
/hello/ 匹配的字符串就是"hello"
- **修饰符**
```js
常用修饰符:img*/
i(取自ignoreCase首字符) 忽略单词大小写匹配
m(multiline) 可以进行多行匹配
g(global) 全局匹配
例如:
/A/.test('banana') => false
/A/i.test('banana') => true
参考文献
https://www.bilibili.com/video/av73512539?from=search&seid=6709635910744811514