是什么?
正则表达式是一组由字母和符号组成的特殊文本, 它可以用来从文本中找出满足你想要的格式的句子。 其目的是对大量数据做过滤,很多场合都会用到。
比如: 筛选大量的email邮件,是否符合标准格式。
常使用缩写的术语"regex"或"regexp".
实例:
让用户名包含字符,数字,下划线和连字符
^[a-z0-9_-]{3,15}$
仅作为参观,后面详细解释各个字符的作用与常见的正则表达式。
1.基础匹配: The 匹配 The , 一一对应完全匹配。
"The" => The fat cat sat on the mat.
2.元字符
正则表达式主要依赖于元字符. 元字符不代表他们本身的字面意思, 他们都有特殊的含义. 元字符写在方括号中有一些特殊的意思.
. 匹配任意单个字符,除了回车符
[] 匹配方括号内任意字符
[^]匹配除方括号内的任意字符
* 匹配*号之前的字符,找到多个(大于等于0)重复的
+ 匹配+号之前的字符,找到多个(大于等于1)重复的
? 标识?之前的字符可选
{n,m} 匹配num个字符,(n<num<m)
(xyz) 匹配与字符集xyz完全相对的字符串
| 匹配运算符前或者后的字符
\ 转义字符,用于匹配一些保留字符,如以上提到的字符[ ] ( ) { } . * + ? ^ $ \ |
^ 从开始行开始匹配
$ 从末端开始匹配
参考:
https://juejin.im/entry/59a651116fb9a024844938b5#1-%E5%9F%BA%E6%9C%AC%E5%8C%B9%E9%85%8D
一般来说 ^ 表示一个字符串的开头, 但它用在一个方括号的开头的时候, 它表示这个字符集是否定的. 例如, 表达式[^c]ar 匹配一个后面跟着ar的除了c的任意字符.
[^c]at
例如表达式c.+t 匹配以首字母c开头以t结尾,中间跟着任意个字符的字符串.
c.+t
a+t 匹配: aaat aat at
(at)+t 匹配 atatll atattt aaatat
?
(at)+t? 匹配 at att
简写字符集
. 换行符外所有字符
\w 匹配所有字母数字 [a-zA-Z0-9]
\W 匹配所有非字母数字 [\w]
\d 匹配所以数字
\D 匹配所有非数字
\s 匹配所有空格
\S 匹配所有非空格
正向向后约束 (?<=\$)[0-9\.]*. 这个表达式匹配 $ 开头, 之后跟着 0,1,2,3,4,5,6,7,8,9,. 这些字符可以出现大于等于 0 次.
(T|t)he(?=\sfat) 匹配 The 和 the, 在括号中我们又定义了前置约束(存在) (?=\sfat) ,即 The 和 the 后面紧跟着 (空格)fat
前置约束-排除 ?! 用于筛选所有匹配结果, 筛选条件为 其后不跟随着定义的格式 前置约束-排除 定义和 前置约束(存在) 一样, 区别就是 = 替换成 ! 也就是 (?!...).
后置约束-存在 记作(?<=...) 用于筛选所有匹配结果, 筛选条件为 其前跟随着定义的格式. 例如, 表达式 (?<=(T|t)he\s)(fat|mat) 匹配 fat 和 mat, 且其前跟着 The 或 the.
后置约束-排除 记作 (?<!...) 用于筛选所有匹配结果, 筛选条件为 其前不跟着定义的格式. 例如, 表达式 (?<!(T|t)he\s)(cat) 匹配 cat, 且其前不跟着 The 或 the.
标志: i 忽略大小写 g 全局搜索 m多行