问题描述
我有这个表达式来检查有效的电子邮件地址。 这是从https://www.regexpal.com/19发来的,它工作正常。
^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$
测试字符串:[email protected]
。
使用POSIX对此进行测试将返回错误。我想知道哪一部分对POSIX无效。
解决方法
POSIX指定两种类型的正则表达式,
- 基本正则表达式,BRE
- 扩展正则表达式,ERE
我们需要知道您要使用哪个。
与PCRE最不兼容的地方是BRE中缺少+
,{n,m}
和(?...)
,而ERE中缺少(?...)
。有关详细信息,请研究Opengroup's BRE and ERE Specification。