【问题标题】:Validate FQDN Name without negative lookahead验证 FQDN 名称而不使用负前瞻
【发布时间】:2019-07-02 15:07:06
【问题描述】:

我找到了这个链接 (www.regextester.com/103452) 来验证基于 REGEX。

(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+[a-zA-Z]{2,63}$)

但是有一个问题,Oracle 不能识别正/负前瞻。

第一个正向前瞻(?=^.{4,253}$) 很容易,我可以验证字符串的长度,但对于负前瞻(?!-),我很难弄清楚。

【问题讨论】:

    标签: regex oracle plsql fqdn


    【解决方案1】:

    ((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+ 表示 1 次或多次重复:

    • (?!-)[a-zA-Z0-9-]{0,62} - 0 到 62 个字母、数字或 -,序列的第一个字符不等于 -
    • [a-zA-Z0-9] - 字母或数字
    • \. - 一个点。

    改写:可以有 1 到 63 个字母、数字或 -,而 - 不作为 . 之前序列的第一个或最后一个字符。

    改用([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+,它将匹配1个或多个重复:

    • [a-zA-Z0-9] - 字母或数字
    • ([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])? - 0 到 61 个字母、数字或 - 的可选序列,然后是 1 个强制性字母或数字
    • \. - 一个点。

    因此,它再次匹配 1 到 63 个字符,在数字-字母-连字符序列的开头或结尾处没有 -

    【讨论】:

      猜你喜欢
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 2016-07-27
      • 1970-01-01
      • 2018-01-26
      • 1970-01-01
      相关资源
      最近更新 更多