V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
older
V2EX  ›  问与答

请帮忙写个纯正则表式,除了指定几个数字段,其它的都匹配

  •  
  •   older · Jan 9, 2014 · 2769 views
    This topic created in 4492 days ago, the information mentioned may be changed or developed.
    要求是:除了指定几个数字段,其它的都匹配。我指定的数
    字如:2到9的数字,和10到12的数字。(这里的数字有时要改,可能会改为100到350等)
    9 replies    1970-01-01 08:00:00 +08:00
    merlin852
        1
    merlin852  
       Jan 9, 2014
    正则主要是针对string处理
    你这要求按数值比较,还会变动,还是用 > or < 比较好
    正则针对2位以上的数值处理真的很弱
    Mutoo
        2
    Mutoo  
       Jan 9, 2014
    数字不多的话,可以全部列出来

    2~9 11,12,13:

    \b((11|12|13)?|[23456789])\b

    原则,字符串长的放前面,用分组+惰性匹配,短的放后面。
    Mutoo
        3
    Mutoo  
       Jan 9, 2014
    @Mutoo 纠正一下,貌似不需要惰性匹配

    \b((11|12|13|15)|[23456789])\b

    > "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 105".match(/\b((11|12|13)|[23456789])\b/g)
    ["2", "3", "4", "5", "6", "7", "8", "9", "11", "12", "13"]
    older
        4
    older  
    OP
       Jan 9, 2014
    100到350 这样要写很长的吧
    older
        5
    older  
    OP
       Jan 9, 2014
    @Mutoo 100到350 这样要写很长的吧
    binux
        6
    binux  
       Jan 9, 2014
    又一个X-Y问题?这压根就不是一个正则文法吧
    Mutoo
        7
    Mutoo  
       Jan 9, 2014
    @older 那样的话应该没办法纯正则了。

    你应该用回调函数来处理,匹配所有数字,然后传入处理就行了,大部分语言都支持。

    str.match(/\d+/g, function(n){
    var num = parseInt(n);
    // do something you want
    });
    liberize
        8
    liberize  
       Jan 9, 2014
    楼主最好把应用场景说出来,应该有比用纯正则更好的方式
    yinheli
        9
    yinheli  
       Jan 10, 2014
    最好是粘贴一些范例, 以及你需要得到的效果, 也好让大家测试
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4873 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 09:55 · PVG 17:55 · LAX 02:55 · JFK 05:55
    ♥ Do have faith in what you're doing.