【问题标题】:Ruby Regular Expression for matching any subdomains and the top level domain用于匹配任何子域和顶级域的 Ruby 正则表达式
【发布时间】:2018-09-12 20:00:21
【问题描述】:

我正在尝试创建一个可以选择匹配任何子域并匹配 TLD 的正则表达式。例如,它应该匹配……

它不应该匹配……

到目前为止,我有这个,它匹配子域,但在顶级域时不匹配。 (\A|(https?:\/\/))?(\w*|\S*)\.{1}example\.com

【问题讨论】:

  • 谢谢,成功了!
  • 这个问题不能用正则表达式解决,因为完全相同域路径可能引用或不引用顶级域,具体取决于客户端的网络。特别是,您发布的域路径都是 relative,而不是 absolute 路径,因此它们是相对于客户端的默认后缀查找的。例如,如果我在德国的一家名为“Foo”的公司工作,该公司拥有域 foo.de,并且它的通信部门正在使用域 com 并拥有一个名为 example 的服务器,那么对于 @ 的 DNS 查询987654329@实际上会返回example.com.foo.de.的地址。
  • 下面的答案有什么问题?

标签: ruby regex


【解决方案1】:

你可以使用

/\A(?:https?:\/\/)?(?:\S*\.)?example\.com\z/

regex demo

详情

  • \A - 字符串开头
  • (?:https?:\/\/)? - 一个可选的(因为末尾的 ? 量词重复 1 或 0 次)非捕获组匹配 http,一个可选的 s,然后是 // 子字符串
  • (?:\S*\.)? - 一个可选的非捕获组,匹配 1 次或 0 次出现的 0 个或多个非空白字符(带有\S*),然后是一个点(\.
  • example\.com - example.com 子字符串
  • \z - 字符串结束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多