正则表达式
2017-11-12 本文已影响0人
秋枫残红
界定符
- 在js中界定符为
/
- 界定符并不作为正则表达式的一部分,只是便于解析器识别正则表达式
原子
- 在正则表达式中原子作为最小匹配单位,分为可见原子和不可见原子
可见原子
- 就是任何Unicode编码表可以找到的可见字符
- 标点符号
- 数字,字母
- 汉语,日语,阿拉伯语等象形文字
- Φ,δ,β,γ等数理化符号
不可见原子
- 就是任何Unicode编码表可以找到的不可见字符
- \n 换行
- \r 回车
- \t 水平制表
- 空格
- 其他
元字符
- 筛选原子
-
|
选择关系,可以理解为or -
[]
,匹配方括号中的任意一个字符 -
[^ ]
匹配除过方括号内的任意一个字符
-
- 表示原子的集合
-
.
除换行符之外的任意一个字符 -
\d
匹配任意一个十进制数字 -
\D
匹配任意一个十进制数字 -
\s
匹配任意一个不可见原子 -
\S
匹配任意一个可见原子 -
\w
匹配任意一个字母数字下划线 -
\W
......
-
量词
- 定义原子匹配次数
-
{n}
匹配原子出现n次 -
{n,m}
匹配原子出现n~m次 -
{n,}
匹配原子出现n次以上 -
*
匹配原子出现{0,}次 -
+
匹配原子出现{1,}次 -
?
匹配原子出现{0,1}次
-
边界控制
- 用于指定模式的边界条件
-
^
开头 -
$
结尾 -
()
将括号部分看做一个原子(模式单元)
-
贪婪模式和懒惰模式
- 正则表达式在匹配时会尽可能多的匹配符号模式的字符串,举个例子
'123456789'.replace(/\d{2,5}/g,'x');
//xx
- 懒惰模式正好相反,当存在冲突时,尽可能的少匹配
'123456789'.replace(/\d{2,5}?/g,'x');
//xxxx9
修正模式
- i 忽略大小写
- g全局匹配
- m多行匹配