一.正则表达式的初识
正则表达式 (Regular Expression)
用既定的规则来匹配字符串/数字 => 一般用来做表单验证和字符串匹配
正则表达式组成:
表达式(规则) / 内部写规则 /
修饰符 i(忽略大小写) g(全局匹配) m(multiple 匹配多行)
注意:
(1) 如果正则表达式不添加修饰符g,每次默认从字符串开头匹配 => 下标为0的位置
(2) 如果正则表达式添加修饰符g, 默认从字符串开头匹配,如果能匹配到(包含符合正则表达式规则的某个或某段字符),则记录下标(匹配内容之后的下标)作为下次匹配开始的位置,下次调用继续向后匹配,依次类推,如果匹配不到返回对应的结果,检索的下标会重置为0 => reg.lastIndex记录下次匹配开始的位置
正则表达式创建方式
1. 字面量创建
var reg = /day/igm;
2. 构造函数创建
var reg = new RegExp("day","igm");
3. 组合版
var reg = new RegExp(/day/igm);
二.正则表达式的拓展方法
1.test() 检索字符串, 判断字符串中是否存在符合规则的某个或某段字符串(一般来说包含关系)
返回值:存在 => true 不存在 => false
2.exec() 检索字符串, 将字符串中符合规则的某个或某段字符取出来放到数组中
返回值: 存在 => 数组 不存在 => null
三.字符串匹配
一.普通匹配
字符匹配符 => 匹配集合中的任意一个字符
[xyz] 匹配x y z中的任意一个 => 由x y z组成
[0-9] 匹配数字中的任意一个 [0123456789]
[a-z] 匹配小写中的任意一个 [qwertyuiopasdfghjklzxcvbnm]
[A-Z] 匹配大写中的任意一个 [QWERTYUIOPASDFGHJKLZXCVBNM]
[0-9a-zA-Z_] 匹配数字字母下划线
[0-9a-zA-Z_$] 匹配 数字 字母 下划线 $
字符匹配符取反 => 非
[^xyz] 匹配除x y z以外的任意一个
[^0-9] 匹配非数字 => 除数字以外的任意一个
[^0-9a-zA-Z_] 匹配非数字 字母 下划线
注意:字符匹配符中除 ^ - [ ] 转义字符 以外, 都是普通字符($ + * ?)
字符簇(官方规定的集合范围 => 直接用)
\d 匹配数字 [0-9]
\D 匹配非数字 [^0-9]
\w 匹配数字 字母 下划线 [0-9a-zA-Z_]
\W 匹配非数字 字母 下划线 [^0-9a-zA-Z_]
\s 匹配空白字符 (空格 换行 回车)
\S 匹配非空白字符
. 除换行符以外的任意字符
[\u4e00-\u9fa5] 匹配中文
二.选择匹配
选择匹配符 | 在正则表达式中表示或的关系 => 通常配合()使用
cat|dog 匹配cat或dog (一个或一段字符之间或的关系)
[xyz] => (x|y|z) 可理解为字符匹配符 单字符之间或的关系
三.转义字符
转义字符
某些字符在正则表达式中有特殊意义,如果向匹配其对应的普通字符 => 就需要转义 => 在字符前添加 \
{ 转义 \{
} 转义 \}
+ 转义 \+
* 转义 \*
? 转义 \?
^ 转义 \^
$ 转义 \$
[ 转义 \[
] 转义 \]
- 转义 \-
. 转义 \.
| 转义 \|
( 转义 \(
) 转义 \)
/ 转义 \/
\ 转义 \\