正则表达式排除以点结尾的捕获

时间:2018-09-09 03:59:23

标签: regex

首先,我不需要完整的电子邮件地址验证,我指定的任务不需要它。我只想升级当前的正则表达式代码,使其与以点结尾的地址不匹配。

我当前的代码:[0-9A-Za-z.]+[@][0-9A-Za-z.]+

它同时捕获了user@exampe.com”和“ user@example.com”。

我希望它仅从不带点的结尾字符串中捕获 user@exampe.com

示例字符串:

dasd.fas@fsaf.dfas.dsazghs@gas.gsqadg32.dsa12@cas ksak@c.csa。 gs32.basaa@scaa.upc。

我想捕获示例中标记为代码的字符串。

编辑:我只有一行带有多个电子邮件地址,并在其后用,space隔开。

4 个答案:

答案 0 :(得分:2)

([0-9A-z.]+@(?:\.?[0-9A-z]+)+)(?=,|$)

Try it here

答案 1 :(得分:2)

您可以在正则表达式后添加[0-9A-Za-z],以使您要在字符类中匹配的内容结尾,而句点前没有正点(?=, |$),该点断言后面是逗号或逗号空格或字符串的结尾。

[0-9A-Za-z.]+@[0-9A-Za-z.]+[0-9A-Za-z](?=, |$)

Regex Demo

答案 2 :(得分:0)

尝试这个:

只需捕获,$并将它们分组为非捕获组,但末尾.

[0-9A-Za-z.]+[@][0-9A-Za-z.]+[0-9A-Za-z](?:(,|$))

demo here

答案 3 :(得分:0)

只需稍微修改一下模式即可:[0-9A-Za-z.]+[@](?:[a-zA-Z]|\.(?=[a-zA-Z]))+

@之后使用交替来匹配一个或多个:字母或点(如果后面跟着另一个字母),这要归功于前瞻性\.(?=[a-zA-Z])

Demo