2017-06-20 13 views
0

我必须验证公司的电子邮件。正则表达式应该验证它是否来自公司,并可能来自约翰。正则表达式不允许在错误位置的电子邮件中的点

我正则表达式现在看起来是这样的:

/[a-z0-9.]*(john)[a-z0-9.]*@mycompany\.com/

唯一的问题,这是允许在点放错了地方。 我看这有效电子邮件:

[email protected] [email protected] [email protected]

,可是我不应该看到这些无效:

[email protected] [email protected]

+0

分隔所以,不要让第一组为点。关于验证电子邮件有许多问题。也许去检查一下他们。 –

+0

您是否将它们测试为单独的字符串?试试['^ \ b [a-z0-9。] *(john)[a-z0-9。] * \ b @ mycompany \ .com $'](https://regex101.com/r/u47ppg/ 1)。 –

+0

约翰在这家公司有多少电子邮件地址,为什么不根据该清单进行验证? – Amy

回答

1

/^([a-z0-9][a-z0-9.]*)?(john)([a-z0-9.]*[a-z0-9])[email protected]\.com$/

这应该确保字符前/后(john)唐分别以.开始/结束。

+0

其实这是做了一半事情,'约翰。@ mycompany.com'是无效的,但'.john @ mycompany.com'仍然有效。但仍然感谢你的帮助:) – aboutus

+0

@aboutus不客气。我的错!在左侧添加'^',在右侧添加'$'。这定义了字符串的开始/结束。如果您一次检查一个地址,这应该起作用。 我把结果表达式放在答复中。 – Jay

+0

是 - 是的,只在一次。谢谢,在你的帮助下,我现在更了解正则表达式:) – aboutus

0

当我写我的回答你已经有很多答案。 :-)好吧,这里是你可以测试的其他东西。

^([[:alnum:]]+\.)?john(\.[[:alnum:]]+)[email protected]\.com 

我对regex101.com

测试如果我的理解以及约翰之前和之后应该有些字由点.

相关问题