首页 » IT » 正则表达式

现实中的正则表达式

以现实中的例子感性认识正则。例如:

查看本机IP

$ ifconfig eth0 | grep "inet addr:" | sed 's/\s*inet addr:\([0-9\.]*\).*/\1/g'
106.187.47.100

正则表达式通常分为几类:

  • BRE - Basic Regular Expression - 基本正则表达式。
  • ERE - Extended Regular Expression - 扩展的正则表达式。
  • PCRE - Perl Compatible Regular Expression - 兼容Perl的正则表达式。

grep默认用BRE,grep -E或egrep使用ERE,grep -P或pcregrep使用PCRE。sed默认使用BRE,sed -r使用ERE。

验证电子邮件地址

电子邮件地址的格式满足以下约束(参考Linux Journal):

  1. 电子邮件由两部分组成:local part和domain,它们之间用@分隔,即localpart@domain。
  2. local part的构成可以是字母、数组,以及以下字符:! # $ % & ' * + - / = ? ^ _ ` { | } ~ . 。注意其中的".",它不能在local part的开始或结束处出现,并且不能连续出现1个以上的"."。
  3. local part可以包含"(引号),空格也可以出现在引号中。
  4. local part可以包含如"\@"这样的组成(也就是邮件地址可以有多个@字符)。注意这是一种过时的语法,新邮件地址应该避免在local part用\@。
  5. local part最多由64个字符组成。
  6. domain的组成部分(labels)由"."分隔。
  7. domain的labels的格式:由1个字母打头,后面跟0个或多个字母、数字或连词符(-),以字母或数字作为结束。
  8. label的最大长度为63个字符。
  9. domain的最大长度为255个字符。
  10. domain可被解析为A或MX记录。

分享

0