【问题标题】:Creating a regex with text, number and url combination使用文本、数字和 url 组合创建正则表达式
【发布时间】:2025-12-23 13:10:06
【问题描述】:

我正在尝试为以下组合创建一个正则表达式

Alphanumerictext1:1234:12:124:aplhnumericText2:www.*.com

在上述格式中,即使文本包含字母数字(第一个字段)或增量值,它也应该通过 : 分隔。

以下是几个有效的例子:

Alphanumerictext1
Alphanumerictext1:1234
Alphanumerictext1:1234:12
Alphanumerictext1:1234::124:aplhnumericText2
Alphanumerictext1::12
Alphanumerictext1:1234:12:124:aplhnumericText2:www.*.com

为此编写了如下的部分正则表达式 ^([\w\s\.]+(:\d*){0,3})$ 但无法满足由 :aplhnumericText2www.*.com 分隔的最后 2 个值。

【问题讨论】:

    标签: c# regex regex-group


    【解决方案1】:

    您可以使用此正则表达式来验证提供的所有示例:

    ^[\w\h.]+(?:(?::\d*){1,3}(?::\w*(?::\w+(?:\.\w+)*)?)?)?$
    

    RegEx Demo

    正则表达式详细信息:

    • ^:开始
    • [\w\h.]+:
    • (?:: 启动非捕获组#1
      • (?::\d*){1,3}:匹配 : 后跟 0+ 个数字。匹配 1 到 3 次出现的 this。
      • (?:: 启动非捕获组#2
        • :\w*:匹配 : 后跟 0+ 个单词字符
        • (?:: 启动非捕获组#3
          • :\w+(?:\.\w+)*:匹配:,后跟主机名
        • )?: 结束可选的非捕获组 #3
      • )?: 结束可选的非捕获组 #2
    • )?: 结束可选的非捕获组 #1
    • $:结束

    【讨论】: