【问题标题】:How to create a regular expression to accept only upto 12 digits? [duplicate]如何创建一个正则表达式只接受最多 12 位数字? [复制]
【发布时间】:2016-10-30 04:08:23
【问题描述】:

如何创建一个只接受最多 12 位数字的正则表达式? 非常感谢

【问题讨论】:

标签: javascript angularjs regex


【解决方案1】:
/^\d{0,12}$/

...分解为...

/      # start regex
^      # anchor to start of string
\d     # 0-9
{0,12} # 0-12 times
$      # anchor end of string
/      # end regex

【讨论】:

    【解决方案2】:
    (?:^|[^0-9])([0-9]{1,12})(?![0-9])
    

    我根据答案将问题分为 3 个部分。

    1. 问题不以数字开头

    (?:^|[^0-9]) 表示以非数字字符开头或不以任何字符开头

    1. 问题要消耗 12 位:

    [0-9] 表示我们只想消费数字

    {1,12} 表示我们要消耗最多 12 个字符

    1. 如果第 13 个字符也是数字,则不消耗这 12 位的问题。

    ?表示看但不消耗

    ![0-9] 表示这个字符可以是除数字以外的所有字符。

    【讨论】:

    • 例如,如果一个字符串只包含 13 个数字,后跟一个不是数字的其他字符,那么您的模式也会匹配,不是在位置 0,而是在位置 1。如果字符串包含只有 12 位数的模式也会失败,因为没有第 13 个字符可以使 (?=[^0-9]) 成功。
    • @CasimiretHippolyte 是的,我会明白这一点。我会更新我的答案
    • 请注意刷新页面,因为我已经多次编辑了我的评论。
    • 顺便说一句,无论你回答什么,这基本上都是一个蹩脚的问题(太宽泛,不费吹灰之力...... === 题外话),所以不要理会它。
    • 当你想在 javascript 中环顾四周时(不支持后向查看),你可以用负前瞻来结束你的模式(如(?![0-9]),相当于(?=[^0-9]|$)),你需要从这样的交替开始:(?:^|[^0-9])。要提取十二位数,唯一的方法是使用捕获组。
    猜你喜欢
    • 2011-08-24
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多