gpt4 book ai didi

javascript - 为什么 "."没有被正则表达式捕获?

转载 作者:行者123 更新时间:2023-11-30 15:28:46 24 4
gpt4 key购买 nike

我想要一个常规的 epxresion,它允许检查给定的电子邮件地址是否正确。首先,它将检查是否存在特定的提供程序,在本例中为 (@test.de) - 这不是问题所在。但是,允许的电子邮件名称必须仅包含字母或点。所以:.@test.de 是有效的。然而,这个具体案例没有被接受。我的正则表达式如下所示:

[A-Za-z\.]{1,}\b@test\.de\b

对于所有其他情况,它工作正常,但如果“.”仅在 @ 前面,则它不适合。

任何指示我做错了什么?

最佳答案

模式中的第一个单词边界 \b 要求在 @ 之前必须有一个单词 char。因此,那里不能出现一个点,匹配失败。

需要去除单词边界,使用

[A-Za-z.]+@test\.de\b

请注意,您不需要对字符类中的点进行转义,它已经表示一个文字点。

如果在删除 \b 后您仍然想匹配“整个”单词,您可以使用 lookbehinds(如果正则表达式引擎支持它们):

(?<!\w)[A-Za-z.]+@test\.de\b

或者只匹配空格/字符串开头:

(?<!\S)[A-Za-z.]+@test\.de\b

或者,如果名称以字母开头,则只使用单词边界,如果名称以点开头,则使用非单词边界:

(?:\b[A-Za-z]|\B\.)[A-Za-z.]*@test\.de\b

参见 this demo

关于javascript - 为什么 "."没有被正则表达式捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42557736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com