正则表达式,可以当作增强版的通配符,帮助匹配指定规则的字符串
正则表达式网站https://regex101.com/
几种常见的正则表达式
限定符
d?: 表示前边字符d出现0次或者1次
a*:表示前边的a可以没有也可以出现多次
c+:表示前边的c可以出现一次或多次
(ab)+:表示前边的ab可以出现一次或多次
ab{6}c:前边的b出现6次
ab{2,6}c:前边的b出现2-6次
ab{2,}c:前边的b出现2次以上
(ab)+:
运算符
a (cat|dog): 匹配字符串"a cat"或者"a dog"
字符类
[abc]+:要求匹配的字符只能取自他们(ab也可以成功匹配)
[a-z]+:所有小写英文字符
[a-zA-Z]+:所有英文字符
[a-zA-Z0-9]+:所有英文字符和数字
[^a-z]+:所有非小写英文字符
元字符
\d:数字字符
\D:非数字字符
\w:单词字符(数字,英文,下划线)
\W:非单词字符
\s:tab和换行
.:不包含换行符的任意字符
^a:匹配行首的a
a$:匹配行尾的a
\b匹配字符边界
例题:匹配16进制色值
#[a-fA-F0-9]{6}\b
例题:匹配ipv4地址
\d+\.\d+\.\d+\.\d+(不对 因为ip地址有范围0-255不是全部的数字)
.需要做转义
正确的:
一个:(25[0-5]|2[0-4]\d|[01]?\d\d?)\.
重复三次加上最后一个
((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)
加上通配符\b匹配字符边界
\b((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)\b