正则表达式

30 阅读1分钟

参考文章:

github.com/ziishaned/l…

www.zhihu.com/question/27…

一、基础匹配

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.
或运算符,匹配符号前或后的字符."(Tt)hecar" => The car is parked in the garage.
\转义字符,用于匹配一些保留的字符 [ ] ( ) { } . * + ? ^ $ \"(fcm)at." => The fat cat sat on the mat.
从开始行开始匹配."^(Tt)he" => The car is parked in the garage.
$从末端开始匹配."(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 之间,只能包含英文和数字。

答案:^[A-Za-z0-9]{6,18}$