【问题标题】:Regex : Validating Domain Name with Regex正则表达式:使用正则表达式验证域名
【发布时间】:2021-10-20 04:24:21
【问题描述】:

我正在尝试使用正则表达式验证域名。

这是我的正则表达式:

^((?!-)(\*\.)?[A-Za-z0-9-]{1,63}(?<!-)\.)+[A-Za-z0-9-]{1,63}

基本上,我不想在“。”之前匹配以“-”结尾的字符串。 例如:test.google-.com

在这种情况下,它是“google-”,但它正在匹配,这对我来说是个问题。

虽然,“test-.google.com”没有得到匹配和预期。

我怀疑,“负后视 ((?

请告诉我如何在此处继续。

【问题讨论】:

    标签: regex


    【解决方案1】:

    您可以使用重复模式,以[A-Za-z0-9] 开始匹配,因此您不需要在开始时进行前瞻。

    然后,您可以在开始匹配 . 之前匹配可选的 -,但前提是它不是在字符串末尾的最后一次出现之前。

    注意,尽管他的模式匹配示例数据,但这并不能验证域名。

    ^[A-Za-z0-9]{1,63}(?:-[A-Za-z0-9]{1,63})*(?:-(?!\.[A-Za-z0-9]{1,63}$))?(?:\.[A-Za-z0-9]{1,63})+$
    

    Regex demo

    【讨论】: