【问题标题】:Regex for optional alphanumeric prefix and mandatory numeric suffix可选字母数字前缀和强制数字后缀的正则表达式
【发布时间】:2015-02-23 15:09:54
【问题描述】:

我正在尝试构建一个正则表达式,其目标是遵循 3 条规则:

(1) 如果输入是字母数字,并且可以分为包含字母和数字的两组,那么字母是前缀,数字是后缀。例如:

输入:ABC123

输出:前缀 = ABC,后缀 = 123

(2) 如果输入仅为数字,则没有前缀,只有后缀。 例如:

输入:123

输出:前缀 = '',后缀 = 123

(3) 如果输入是混合字母数字,那么输入末尾的所有数字都是后缀,所有其他字符都是前缀

输入:A9B9C123

输出:前缀 = A9B9C,后缀 = 123


到目前为止我已经尝试过:

"(?P<prefix>\D*)(?P<suffix>\d*)"

这符合规则 (1) 和 (2) 但不符合 (3)。

"(?P<prefix>.*)(?P<suffix>[0-9]+)"

这符合规则 (3),但违反规则 (1) 和 (2)。

注意:输入总是以数字结尾,前缀是可选的。

感谢您的帮助。

【问题讨论】:

    标签: regex alphanumeric digit


    【解决方案1】:

    锚在这里很重要。 ^.*? 将进行零个或多个字符的非贪婪匹配,直到 (?P&lt;number&gt;[0-9]+) 最后一个数字。并且最后一个数字被第二组捕获。

    ^(?P<prefix>.*?)(?P<number>[0-9]+)$
    

    DEMO

    【讨论】:

    • 完美!非常感谢。
    猜你喜欢
    • 2015-03-21
    • 2014-03-05
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 2013-11-15
    • 2012-12-21
    • 1970-01-01
    相关资源
    最近更新 更多