参考文章:
https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md
https://www.zhihu.com/question/27793187/answer/943413381
一、基础匹配
a匹配a,b匹配b
举例:
“the” => the mat.The fat cat sat on
二、元字符
| 元字符 | 描述 | 举例 |
|---|---|---|
| . | 句号,匹配任意单个字符除了换行符。 | “.” => The fat cat sat on the mat. |
| [ ] | 匹配方括号内的任意单个字符 | “[ao]” => The fat cat sat on the mat. |
| [^ ] | 否定的字符种类。匹配除了方括号里的任意字符 | “[^ao]” => The fat cat sat on the mat. |
| * | *号之前的字符出现>0次 | “a*” => The fat cat sat on the mat. |
| + | +号之前的字符出现>1次 | “a+” => The fat cat sat on the mat. |
| ? | ?之前的字符出现0次或1次 | “a?” => The fat cat sat on the mat. |
| {n,m} | 匹配num个大括号之前的字符或字符集 (n <= num <= m). | “[0-9]{2,3}” => The number was 9.9997 but we rounded it off to 10.0. |
| (xyz) | 字符集,匹配与 xyz 完全相等的字符串. | “cat” => The fat cat sat on the mat. |
| 或运算符,匹配符号前或后的字符. | ||
| \ | 转义字符,用于匹配一些保留的字符 [ ] ( ) { } . * + ? ^ $ \ | |
| ^ | 从开始行开始匹配. | "^(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 行终止符 |
四、练习题
例1:北美地区的电话号
编码方案:电话号码有一个3位数的区号和一位7位数的号码组成(这个7位数有分成 一个3位的局号和一个4位的路号,局号和路号之间使用连字符分隔) 每位电话号码可以是任意数字,但是区号和局号的第一位数字不能是0或1.实际书写号码是往往会把区号写在括号里面,或者将区号使用连字符和后面的局号连接起来。例如:(555)123-1234或555-123-1234,有时候在括号你里面会包含空格。例如:(555 )123-1234
文本:
248-555—1234
(313)555-1234
(810)555-1234
答案: [(]?[^01]\d{2}[-)]\d{3}[—-]\d{4}
例2:验证用户密码,长度在6~18 之间,只能包含英文和数字。
答案:1{6,18}$
A-Za-z0-9 ↩︎