前言:今天学习的时候遇到了正则表达式,还不怎么会,故来学习一下
1.1 什么是正则表达式
正则表达式是用于匹配字符串中字符组合的模式,当搜索文本中的数据是,可以使用搜索模式来描述搜索的内容,
很多语言都支持正则表达式,其实就是匹配字符的规则,可以用来判断字符串中是否含有某个字符或者某个字符串
或者判断用户输入的手机号是否合法
1.2 定义正则表达式
正则表达式的规则为
const 变量名 = /表达式内容/;
一个实例
var a=/aa/i;
上面的/aa/i
是一个正则表达式,aa是模式,在搜索中使用,i是修饰符,把搜索改为大小写不敏感
1.3 使用字符串
在js中,正则表达式有两个字符串方法,search()
和replace
前一个方法使用表达式来搜索匹配,然后返回匹配
位置,replace()
方法返回模式被替换处修改后的字符串
具体使用如下
var str = "aBc";
var n = str.search(/b/i);
alert(n);
返回的是b的位置,1,由于设置了i,既大小写不敏感,所以会正常查询
var str = "Visit Microsoft!";
var res = str.replace(/microsoft/i, "W3School");
1.4 正则表达式的修饰符
i 执行对大小写的匹配
g 执行全局匹配,查找所有匹配而不是在找到第一个匹配后停止
m 执行多匹配
1.5 正则表达式的限定符
1.5.1 ?
在正则表达式中?是一个限定符表示前面的字符可以出现0次或者1次
比如 /used?
这个正则表达式可以匹配used也可也匹配use
1.5.2 *
*
表示前面的字符可以没有,但也可以出现零次或者多次,比如 /ab*c
这个正则表达式可以匹配abc,匹配ab,也可也匹配abbbbbc,都可以与之匹配
1.5.3 +
该限定符和*
类似,只不过*
可以匹配前面字符未出现或者多次出现的字符串,而+
只能匹配前面字符只出现一次
或多次的情况,也就是至少出现一次。
1.5.4{}
用于限定字符出现的次数
比如/ab{2}c
就是限定b只出现两次
/ab{2,4}c
就是限定b出现2到4次
/ab{2,}
就是大于等于2
如果想要重复的不是单个字符,而是字符串,可以用括号括起来,比如
/(ab){2,3}c
就是ab可重复出现2到三次
1.6 | 或运算符
表示选择
比如/a(cat|dog)
匹配可以是 acat ,也可也是 adog
注意添加括号
1.7 字符类
1.7.1 []
该字符类可以快速匹配大小写和字母
比如/[a-z]+
可以匹配由a-z组成的所有字符串
注意,不能省略+
如果为/[a-z]
则匹配的是a-z的所有小写字母,而不是字符串
与之用法类似的还有
/[A-Z]+
用来匹配大写
/[1-9]+
用来匹配数字
也可也匹配使用
/[1-0a-z]+
1.7.2 [1]
用该符号可以匹配除了后面的所有字符
比如/^[a-z]+
可以匹配到所有不由a-z组成的字符串
1.8 元字符
\d
代表数字字符等同与[0-9]
可以匹配任何一个数字字符,注意不是字符串
\w
表示单词字符,也就是匹配所有的大小写字母,数字,下划线,注意是字符,不是字符串
\s
代表空白符,包含table和换行符
\b
规定匹配的字符必须存在单词边界,比如/aa\b
就只会匹配 aa,不会匹配aaa
\D
代表非数字字符,就是匹配不符合数字字符的字符
\W
\S
依次类推这俩的意思
.
表示任意字符,如果需要匹配.
需要用到\.
进行转义
.+
可以匹配任意字符串,但不包含空字符.*
比前者多了空字符
^
可以匹配行首
比如/a^
可以匹配所有行首的a
/a$
可以匹配所有行尾的a,注意是字符
1.9 贪婪模式和懒惰模式
具体见此篇