原文链接 在线正则表达式编辑 正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足想要格式的语句。 一个正则表达式(“Regular expression”,缩写为“regex”或“regexp”)是一种从左到右匹配字符串的模式,可以从一个基础字符串中根据一定的匹配模式替换文本中的字符串、验证表达表单、提取字符串等。 例子,假设创建一个用户命名的规则,让用户名包含字符、数组、下划线(_)和连字符(-)并限制字符的个数,可以使用以下正则表达式来验证: 基本匹配 正则表达式其实就是在执行搜索时的格式,它由一些字母和数组组合而成。 正则表达式 描述 示例 the 由字母t开始,接着是h,再接着是e the => The fat cat sat on the mat. The The => The fat cat sat on the mat. 正则表达式是大小写敏感的。 元字符 正则表达式主要依赖于元字符。 元字符不代表它们本身的字面意思,它们有特殊的含义 一些元字符写在方括号中的时候,有一些特殊的意思 如[.]表示英文句号,示例:ar[.] => A garage is a good place to park a car. 元字符 描述 示例 . 匹配任意单个字符(除换行符) .ar => The car parked in the garage. [] 匹配方括号内的任意字符 [Tt]he => The car parked in the garage. [^] 匹配方括号以外的任意字符 [^c]ar => The car parked in the garage. * 匹配>=0个*之前的字符 [a-z]* => The car parked in the garage #21. + 匹配>=1个+之前的字符 c.+t => The fat cat sat on the mat. ? ?之前的字符为可选 [T]?he => The car is parked in the garage. {n,m} 匹配{}前固定数量个字符,数量在n与m之间,m不写表示至少n个,m和,都不写表示固定次数 [0-9]{2,3} => The number was 9.9997 but we rounded it off to 10.0. () 匹配与()内完全相同的字符串 `(c ` ` 匹配` \ 转义字符,匹配保留字符[](){}.*+?^$\| `(f ^ 匹配行开头 `^(T $ 匹配行结尾 (at\.)$ => The fat cat. sat. on the mat. 简写字符集 简写 描述 . 匹配所有字符(除换行符) \w 匹配所有字母和数字,等同[a-zA-Z0-9_] \W 匹配所有非字母数字,等同[^\w] \d 匹配数字,等同[0-9] \D 匹配非数字,等同[^\d] \s 匹配所有空格字符,等同[\t\n\f\r\p{z}] \S 匹配所有非空格,等同[^\s] \f 匹配一个换页符 \n 匹配一个换行符 \r 匹配一个回车符 \t 匹配一个制表符 \v 匹配一个垂直制表符 \p 匹配CR\LF,等同\r\n,匹配DOS行终止符 零宽度断言 先行断言和后发断言都属于非捕获簇,不捕获文本也不针对组合进行计数。 符号 含义 描述 示例 ?! 负先行断言---排除 用于筛选所有匹配结果,筛选条件为其后不跟随着断言中定义的格式 `(T ?<= 正后发断言---存在 筛选所有匹配的结果,筛选条件为其前跟随着断言中定义的格式 `(?<=(T ?<! 负后发断言---排除 筛选所有匹配结果,筛选条件为其前不跟随断言中定义的格式 `"(?<!(T 标志 标志也叫模式修正符,用来修改表达式的搜索结果,标志可以任意组合使用,是正则表达式的一部分。 标志 描述 示例 i 忽略大小写 /The/gi => The fat cat sat on the mat. g 全局搜索 /.(at)/g => The fat cat sat on the mat. m 多行修饰符,^,$工作范围在每行的起始 /.at(.)?$/gm => The fat <br> cat sat <br> on the mat. 贪婪匹配&惰性匹配 正则表达式默认采用贪婪匹配:/(.*at)/ => The fat cat sat on the mat. 使用?将贪婪匹配转换为惰性匹配:/(.*?at)/ => The fat cat sat on the mat.