如何通过省略子域来匹配域名与正则表达式?

时间:2015-06-01 20:34:05

标签: regex

这是我的正则表达式

[a-zA-Z0-9][a-zA-Z0-9-]{0,61}\.[A-Za-z0-9]{1,23}

正确匹配域

例如:youtube.comgoogle.com

虽然在存在子域时无法与域匹配。

例如。 www.youtube.commail.google.com

如何更改它以仅匹配域而不匹配子域? 我是正则表达式的初学者,无论如何我不喜欢拆分字符串并匹配部分,而是使用正则表达式。

这是regexr

感谢

2 个答案:

答案 0 :(得分:2)

我认为如果您将正则表达式锚定到输入字符串的末尾,它将执行您想要的操作。为此,请在表达式的末尾使用$

[a-zA-Z0-9][a-zA-Z0-9-]{0,61}\.[A-Za-z0-9]{1,23}$

这将匹配" goole.com"部分" mail.google.com"以及没有像" google.com"。

这样的子域名的字符串

答案 1 :(得分:0)

我试图通过为电子邮件添加一些限制来修复你的正则表达式:

(?![\d\s.]+\b)\b([0-9a-z-]{2,}\.[0-9a-z-]{2,3}\.[0-9a-z-]{2,3}|[0-9a-z-]{2,}\.[0-9a-z-]{2,3})(?!@)\b

请参阅updated demo

我添加了一个i不区分大小写的选项,以摆脱[A-Z]并使用[a-z]