【问题标题】:REGEX rule to validate a domain field用于验证域字段的 REGEX 规则
【发布时间】:2013-11-08 12:18:14
【问题描述】:

对于我提供的其中一种产品,它仅适用于具有某些域扩展名的人。

在订单上有一个字段供他们输入他们的域,我使用的系统允许我在继续订购过程之前验证该字段。

我可以添加一个“验证正则表达式”以在域字段中输入的值上运行。

支持的 TDL 有:.com、.net、.org、.biz、.info、.name、.tv、.cc、.me、.pro、.mobi、.cm、.co、. com.co、.nom.co、.net.co、.ws

我正在尝试找出使用什么 REGEX 验证来确定在该字段中输入的域是否与这些 TLD 之一匹配。

我无法更改此任务的任何代码。我只有一个字段可以输入 REGEX 验证规则。

感谢您提出的任何想法或建议。

【问题讨论】:

    标签: regex validation


    【解决方案1】:

    如果只是他们输入的域,请使用

    \.(com|net|org|biz|info|name|tv|cc|me|pro|mobi|cm|co|ws)$
    

    这匹配域结尾,后跟您指定的 TLD 之一。

    由于您已经允许 .co 作为 TLD,因此无需检查 com.co、nom.co 或 net.co;它们是有效的,因为它们以 .co 结尾。

    【讨论】:

    • 这不会允许.asfasfassfas.co helloTheremyFriend.co 之类的东西吗?
    • 是的。你的第二个例子实际上是一个有效的域名。但是,要求是将输入限制为某些 TLD。 可以进一步验证输入是否类似于实际域,但这不是所要求的。
    • 那就对了,我以为他只想匹配 TLD。
    • 这似乎不起作用。我不确定系统使用什么函数/方法来根据正则表达式规则检查域,该字段只是标记为“正则表达式验证字符串”。我输入了这个规则,但是域名sadfasfdasf.com 没有通过验证。因为它是一个允许的 TLD,所以应该通过。
    • 实际上,我认为如果我在你的字符串前后加上一个正斜杠,它确实有效。立即测试。
    【解决方案2】:
    ([^\s]+(\.(?i)(com|net|org|biz|info|name|tv|cc|me|pro|mobi|cm|co|nom|ws|com.co|nom.co|net.co))$)
    

    【讨论】:

      【解决方案3】:

      这应该适用于:

    • 仅扩展:
      ^\.(?i)(net.co|nom.co|com.co|com|net|org|biz|info|name|tv|cc|me|pro|mobi|co|cm|ws)$
      

    • name.extedning:
      \.(?i)(net.co|nom.co|com.co|com|net|org|biz|info|name|tv|cc|me|pro|mobi|co|cm|ws)$
      

    • 【讨论】:

      • 只有当just TLD(包括它前面的点)被输入时才匹配。它还匹配一个点。
      • @SQB 哦,没注意到我最后多了一个|,谢谢。
      • 另外,您匹配的是 .nom,它不是 asker 指定的有效 TLD。
      • @SQB O_o 是的,我在更改模式顺序时不得不将其留在那里,已修复。
      猜你喜欢
      • 1970-01-01
      • 2023-01-19
      • 2016-01-26
      • 2018-08-15
      • 2011-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多