正则表达式就是 一个用于查找的 含有 匹配字符串 或 匹配元字符的 字符串。
正则表达式的组成: 由 元字符 或者 限定符 组成的一个式子
- 元字符
(1) . 表示除了换行符以外的任意一个字符如 '111' ','
(2) [] ①表示范围 ②表示把正则表达式中的元字符的意义取消掉
[0-9]: 表示0~9之间任意一个数字 '123' '534'
[a-zA-Z]:所有的字母中任意一个
[.]: 表示 一个 .
(3) | 表示或者
[0-9]|[a-z]: 要么是一个数字,要么是一个小写的字母 '哈哈0嘻嘻x'
(4) () 用于分组,提高优先级
[0-9]|([a-z]):先(),在其他
([0-9])([a-z]):两个组,从左往右开始计算
又是元字符,又是限定符
(1) * 表示前面的表达式出现0次或者多次
[a-z][0-9]* : 任意一个小写字母,后面要么0个数字要么多个数字如: 'afjlsdjflj7'
(2) + 表示前面的表达式出现了1次或者多次
[a-z][0-9]+ 任意一个小写字母, 后面至少出现一个数字 'ajljlj998808'
(3) ? 表示前面的表达式出现了0次或者1次,还可以用于阻止贪婪模式
[3][a-z]? 3,后面出现一个字母,或者一次也不出现 '3666a' '3j' '3'
**限定符
(1) {n}-----限定 前面的表达式出现了n次
[0-9]{3} 一定会有3个数字 如: '哈哈6690嘻嘻'
(2) {n,}----前面的表达式出现n次到多次
{0,}-----表示前面的表达式出现了0次 或者多次,和 * 一样
[a-z][0-9]{0,} : 任意一个小写字母,后面要么0个数字要么多个数字
'哈哈abc89999'
{1,}----表示前面的表达式 出现1次 或者多次 ---和 + 一样
{0,1}----表示前面的表达式 出现0次 或者1次----和 ? 一样
(3) {n,m}----前的表达式出现n到m次
{3,7}----表示前面的表达式 出现3次到7次
[0-9]{3,7} '哈哈1234567'
错误的写法: {,10};
(4) ^ ①以什么开始
^[0-9]: 以数字开头
^[a-z]:以字母开头
②取反
[^0-9]:表示非数字
[^a-z]: 表示非小写字母
(5) $ 以什么结束
[0-9]$: 表示一定要以数字结尾
^[0-9]$: 严格模式数字开头数字结尾
简写元字符
\d: 任意一个数字 [0-9]
\D: 任意非数字 字母,特殊符号
\s: 空白符 包括空格, tab, 回车换行等
\S: 非空白符
[\s\S] 表示任意字符
\w: 非特殊符号 数字,字母,下划线 [0-9a-zA-Z_]
\W: 特殊字符 ,。?#……
修饰符
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。
js 正则表达式对象 就是 由 正则表达式创建的对象, 该对象可以进行 匹配, 提取 和 替换.
创建正则表达式对象
-
构造函数
var regex = new RegExp( 正则表达式字符串[, 匹配模式] );
-
字面量
var regex = /正则表达式/;
- 使用正则表达式使用test()方法进行匹配
语法: 正则对象.test( 字符串 )
如果参数字符串中含有 复合 正则匹配的 子字符串, 就返回 true, 否则返回 false
- 正则表达式可以使用 exec() 与match()可以将匹配到的数据提取出来
字符串.match(正则表达式)-----返回一个数组,存储匹配的值(match字符串的方法)
正则表达式对象.exec( 字符串 ) 返回值是数组
exec 首先获得第一个匹配项,再调用一次该方法, 就可以获得 第二个匹配项,一直调用下去, 就可以得到所有的匹配项,直到最后全部匹配完, 如果还用该方法, 则返回 null。
- 字符串的替换
语法:
字符串.replace( 查找字符串, 替换字符串 ) -> 字符串
注意:replace方法是字符串的方法,不是正则对象的方法
字符串1.replace( 字符串2, 字符串3 )
在 字符串1 中找到 字符串2, 将其替换成 字符串3, 返回替换后的字符串
特点: 只替换第一个找到的字符串
字符串.replace( 正则表达式, 字符串 ) -> 字符串
贪婪模式
凡是在正则表达式中, 涉及到次数限定的, 一般默认都是尽可能的多匹配.
取消贪婪模式. 取消贪婪模式: 在次数限定符(+,*,?,{})后面加上 ?
注意: 贪婪模式性能会略高于非贪婪模式, 所以开发的时候. 一般不考虑贪婪的问题
只有代码匹配结果出现问题了, 一般一次多匹配了, 才会取消贪婪。
学习链接:https://www.runoob.com/jsref/jsref-obj-regexp.html