✏️ 扩展正则表达式
1️ { }、()、+、?、
扩展正则表达式与基本正则表达式90%的用法是一摸一样的,只是有那么几个符号有区别,这几个符号就是{ }、()、+、?
,分别对应基本正则表达式中的\{ \}、\(\)、\+、\?
。
要使得grep
将正则表达式中的符号当做扩展表达式去理解,需要用到-E
选项,如下示例表达式就是利用扩展正则表达式 {}
匹配文件中qi
后面出现2次字符n
的行,其对应基本表达式:
cat regular_3.txt | grep -n --color "qin\{2\}"
2️ |
在扩展正则表达式中,还有一个很常用的符号|
,它表示或,这是基本正则表达式所没有的,这个符号通常会和分组结合在一起使用。
如果 | 不和分组结合用:
很明显,|
有没有和分组一起用,区别很大,从上面的匹配结果很容易看出,"(n|z)$
" 表示匹配以n
结尾或者以z
结尾的行;而"n|z$
"则表示匹配以z
结尾或者含有n
的行。也就是说,如果不用分组,后面的$
不会作用在前面的字符n
上。
✏️ 常用正则表达式
校验密码强度:密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间。
^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
校验E-Mail地址:下面是E-mail地址合规性的正则检查语句。
[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?
校验身份证号:身份证号分为15位和18位,分别可以用以下正则来校验。
# 15位校验
^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$
# 18位校验
^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$
校验手机号:下面是国内 13、14、15、18开头的手机号正则表达式。注:14开头只有145和147这两个号段。
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$
校验IPv4地址:
\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b
检验日期:“yyyy-mm-dd“ 格式的日期校验,已考虑平闰年。
^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$
提取URL链接:下面的这个表达式可以筛选出一段文本中的URL。
^(f|ht){1}(tp|tps):\\/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w- ./?%&=]*)?
提取网页图片:假若你想提取网页中所有图片信息,可以利用下面的表达式。
\\< *[img][^\\>]*[src] *= *[\\"\\']{0,1}([^\\"\\'\\ >]*)