【问题标题】:Regular expression to extract data type and length from string从字符串中提取数据类型和长度的正则表达式
【发布时间】:2014-07-04 11:13:50
【问题描述】:

我有以下正则表达式,我想将数据类型和长度提取到组中,以便对它们进行操作。

^(an|a|n)\..([0-9]*)|(an|a|n)([0-9]*)

以下数据类型均有效:

  • an..70 - 表示最多 70 个字符的字母数字
  • an3 - 表示字母数字正好 3 个字符长
  • n4 - 包含四位数字的数字
  • n..4 - 最多包含四位数字的数字

只有“an”、“n”和“n”是有效的数据类型,并且都可以在类型和数字之间有一个“..”范围指示符(或没有)。

我遇到的问题是,当我处理“ang..35”时,正则表达式不起作用,因为它匹配文本中的“an”,但如果它找不到任何有效的,我希望它无效数据类型。

【问题讨论】:

    标签: regex


    【解决方案1】:

    当我处理“ang..35”时,它与文本中的“an”匹配,但我希望它无效

    那么你也想使用$ end-of-string anchor

    例如:

    /^(a?n)((?:\.\.)?\d+)$/
    

    【讨论】:

    • 那个不行。我试过^(an|a|n)\..([0-9]*)$|(an|a|n)([0-9]*)$,它在添加字符串锚的结尾后工作,它似乎工作正常。这可以改进吗?
    • 你不是说a 是一个有效的数据类型,长度是可选的吗?此外,您的正则表达式缺少第二个起始锚点(或者应该简化为 ^(a|n|an)(\.\.)?(\d*)$)。
    • 很抱歉错过了 a 数据类型。您的解决方案效果很好。感谢您的帮助!
    猜你喜欢
    • 2013-06-04
    • 2021-11-09
    • 1970-01-01
    • 2018-07-11
    • 2011-05-10
    • 2021-07-27
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多