如何忽略正则表达式中的点(。)?

时间:2017-07-09 16:24:12

标签: regex

我有这个:

(adrian)(@mazur.com)|(^(adrian)\+(.*)@mazur.com$)

它只是部分匹配:

adrian@mazur.com
adrian+whatever@mazur.com
adrian+what.ev.er@mazur.com
a.d.r.i.a.n@mazur.com
a.d.r.i.a.n+whatever@mazur.com
a..drian@mazur.com

它们也无法匹配:

patryk@mazur.com
patryk+whatever@mazur.com
patryk+what.ev.er@mazur.com
p.a.t.r.y.k@mazur.com
p.a.t.r.y.k+whatever@mazur.com
p..adtryk@mazur.com
p.dra..us...@mazur.com

或其他像danuta,micheal,ryan,sean等。

如何让它忽略我名字之间的点(。)? 我使用这个工具来测试正则表达式:http://74.50.60.193/它是http://www.rubular.com/但是它不适合我,所以我也放了IP。

3 个答案:

答案 0 :(得分:0)

所有当前的答案都有其模式中的逻辑缺陷。

根据OP的问题结合OP的持续评论以及OP的上一个问题,有效的字符串将:

  1. adrian开始,可能在名称中的每个/每个字母之前或之后有零个或多个点。
  2. adrian子字符串可以选择后跟一个加号,然后是零个或多个非空白字符。
  3. 您正在寻找:(Demo

    ^(\.*a\.*d\.*r\.*i\.*a\.*n\.*(?:\+[^@\s]*)?)(@mazur\.com)$
    

答案 1 :(得分:-1)

你可以试试这样的东西虽然它不是最好的解决方案(你还需要全局旗帜来捕捉所有的比赛):

(a\.*?d\.*?r\.*?i\.*?a\.*?n)\+?(.*)(@mazur\.com)

答案 2 :(得分:-2)

[^ \n]{1,}(@mazur.com)

这表示接受除空格或新行之外的任何内容,从1次到多次,然后是您的网站名称。我将它从0更改为1,因为我认为没有人会收到一封电子邮件而没有领先的东西。

但是,如果它除了阿德里安之外什么都不能匹配......你可以做到这一点。不是这么优雅的方法,但这将解决您的问题。

a(\.+)?d(\.+)?r(\.+)?i(\.+)?a(\.+)?n(.+)?(@mazur\.com)