用来操作字符串,按照一定的规则去匹配字符串;
正则表达式匹配的第一种方式:
原型 var 对象名 = new RegExp(参数1,参数2)
参数1:匹配的规则,必须是字符串;
参数2:可以省略,属性可选值,用来设置匹配的范围;
正则表达式的第二种写法: 字面量(语法糖)的形式
var 对象名 = /参数1/参数2;
参数1:匹配的规则,这里不能是字符串,语法糖和原型的区别;
参数2:可以省略,属性可选值,用来设置匹配的范围;
i:不区分大小写;
g:全局(搜索)匹配,即使匹配到对应的内容,也会继续匹配,直到字符串结束为止,默认是局部匹配,匹配到即结束,返回结果;如果是匹配结果(true或者false),不需要使用全局,如果是匹配到内容,则可以使用全局匹配;
m:多行搜索,换行需要重新匹配
字面量(语法糖)的形式,创建字符串,数组,对象…
匹配规则:
1.普通字符串的匹配规则
/F2/ /19a/ 直接写,代表是否包含F2字符串
/[F2]/ []代表是否出现过F或者2
2.特殊字符串的匹配规则
\n 换行
\t 切换符合tab键
\r 回车键
\d 或者[0123456789] 或者 [0-9] 数字0-9
\D 或者 [^\d] 或者 [^0123456789] 或者 [^0-9] 非数字
^放在[]中,代表除了[]中出现的字符以外
\w 或者 [a-zA-Z0-9 ] 数字,字母,下划线
\W 非数字,字母,下划线
\s 空白(空格,换行,tab键)
\S 非空白
. 或者 [^\n] 除了\n换行以外的所有字符,除了\n是false,其他都是true;
.有特殊含义,代表匹配规则,所以,如果想匹配字符串中是否包含字符" . ",需要进行转义;例如:[a\.c] 匹配是否出现过a或者.或者c字符
[] 用来匹配字符串中是否出现过[]中的字符,如果出现过,则返回true
^ 放在匹配规则最前面,代表以某某开头
^[] 匹配以[]中出现过的字符作为开头
[^] 用来匹配除了[]中以外的其他字符
| 或者 (要或者的条件加括号)
$ 以某某结尾
3.特殊字符的匹配
选字符,用于指定字符串的范围;
[0-9] 匹配0-9的任意数字
[a-z] 匹配a-z的所有小写字母
[A-Z] 匹配A-Z的所有大写字符
[\u4e00 - \u9fa5] 匹配中文字符,汉字
[^\u4e00-\u9fa5] 匹配非汉字
[\x00-\xff] 匹配所有非汉字和非中文标点符号
[^\x00-\xff] 匹配所有的汉字和中文标点符号(双字节)
4.正则中的量词
注意:量词都对应左边最近的匹配规则
{n} 连续重复出现n次
{m,n} 连续重复出现m到n次
+ 相当于{1,} 出现一次到多次
* 相当于{0,} 出现0次到多次
?相当于{0,1} 出现0次或者1次,可选项,可选择是否处理;例如:月份10月以前,带0不带0都对,09月,9月
(.*?) 非贪婪匹配,会一直找,找到下一个的正则规则位置为止 例如:\{(.*?)\} 从{ 会找到}为止
(?=) 在任何匹配的字符串开始处匹配查找字符串,可以当成是一种条件判定,满足才能匹配(必须)
(?:) 表示我们需要匹配某样东西本身。
(?=.*?) 表示必须找到这个东西
5.定位符
^ 以某某开头
$ 以某某结尾
\b 匹配到单词的边界
6.正则表达式函数
①.匹配规则对象.test(字符串) 作用:判断该字符串是否满足正则表达式的匹配规则,满足返回true,反之返回false;
②.字符串对象.match(正则表达式) 作用:用来匹配字符串中是否包含满足正则匹配规则的字符串内容;返回值是一个数组,每个字符串作为数组的一个元素;
③.字符串查找 字符串对象.search(正则表达式)
作用:只要匹配到符合正则的字符串,就会将该字符串的开始下标返回,否则返回-1;和indexOf作用一样,如果匹配到多个,则返回第一个的下标;