什么是正则表达式?
Regular Expression(代码简写:regex,regexp或RE),正则表达式 是使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。 即按照某种规则去匹配符合条件的字符串。
图形化理解工具
- 手机号正则 /^1[34578][0-9]{9}$/
- 单词边界 /\bis\b/
- URL分组替换 /http:(//.+.jpg)/
- 日期 /^\d{4}[/-]\d{2}[/-]\d{2}$/
- 日期分组是
正则表达式语法
- 修饰符 (三个 g i m)
g : global 执行一个全局匹配
i: ignore case 执行一个不区分大小写的匹配
m: multiple lines 多行匹配
有无 g
有无i
正则表达式由两种基本字符组成:文本字符 和 元字符
-
元字符
\cx 匹配由x指明的控制字符,如\cM 匹配一个control-M或回车符
\f 匹配一个换页符
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符
\v 匹配一个垂直制表符
\s 匹配任何空白符,包括(空格、制表符、换页符,等价于[\f\n\t\r\v])
\S 匹配任何非空白字符。 等价于[^ \f\n\r\t\v]
-
字符类 [] 如[34578] 表示34578任意一个数字即可
-
字符类取反[^] 表示不属于此类 (空格也不属于)
-
范围类[-] 如[a-z0-9] ,若只想匹配- 则在范围最后加- 即可
-
预定义类 :常用的方便书写的字符 等价类 [^\n\r] 除了回车符和换行符之外的所有字符
\d 数字字符[0-9]
\D 非数字字符[^0-9]
\S 非空白符 [^\t\n\xOB\f\r]
\w 单词字符(字符、数字、下划线) [a-zA-Z0-9]
\W 非单词字符 [^a-zA-Z0-9]
-
边界
^ 以xx 开头
$ 以xx 结尾
\b 单词边界,指[a-zA-Z0-9]之外的字符
\B 非单词边界
-
量词
? 出现零次或一次
*出现 零次或多次(任意次)
+出现一次或多次(至少一次)
{n} 对应零次或 n 次
{n,m} 至少出现n 次 但不超过 m 次
{n,}至少出现n 次(+ 的升级版)
{0,n} 至多出现n 次
-
贪婪与懒惰(非贪婪)
贪婪模式:尽可能多的匹配 /\d{3,6}/匹配最多的情况
懒惰模式:尽可能少的匹配 /\d{3,6}?\
反向引用:如不想获取年 加?: /^(?:\d{4})/-/-$/