扩展正则表达式

✏️ 扩展正则表达式

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}([^\\"\\'\\ >]*)

Last updated