V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Miorpher
V2EX  ›  问与答

js 的正则匹配有没有办法取差集?

  •  
  •   Miorpher · 2014-09-05 01:49:16 +08:00 via Android · 3437 次点击
    这是一个创建于 3741 天前的主题,其中的信息可能已经有所发展或是发生改变。
    例如,我现在想匹配除了diq三个字母之外的所有的小写字母,网上给出的例子都是写成[a-ce-hj-pr-z]
    写起来很麻烦,有没有简便一些的方法,比如取[a-z]和[diq]的差集,应该如何写?
    10 条回复    2014-09-05 09:44:13 +08:00
    arnofeng
        1
    arnofeng  
       2014-09-05 01:59:57 +08:00 via Android   ❤️ 1
    符号^
    arnofeng
        2
    arnofeng  
       2014-09-05 02:05:12 +08:00 via Android   ❤️ 1
    (?![au]t\b)
    arnofeng
        3
    arnofeng  
       2014-09-05 02:08:11 +08:00 via Android   ❤️ 1
    (?![diq])
    Miorpher
        4
    Miorpher  
    OP
       2014-09-05 02:08:14 +08:00 via Android
    @arnofeng 具体应该怎么写呢?
    如果只写成[^diq]的话不就把除了这三个小写字母之外的(大写字母,数字,符号)字符都匹配到了,可是我只是想匹配除了这三个小写字母之外的所有小写字母而已。
    arnofeng
        5
    arnofeng  
       2014-09-05 02:18:15 +08:00 via Android
    (?![diq])\w 即可
    arnofeng
        6
    arnofeng  
       2014-09-05 02:20:20 +08:00 via Android
    (?![diq])指右边不允许出现diq。。再标准一点是 (?![diq])\w \b

    指一个单词里面不能出现diq ,\b是单词边界。
    手机打字不太好。
    SoloCompany
        7
    SoloCompany  
       2014-09-05 02:22:26 +08:00 via iPad
    正则可以有&&操作符的,就不知道js只不支持
    arnofeng
        8
    arnofeng  
       2014-09-05 02:26:11 +08:00 via Android
    我也是刚学几周,贴上相关介绍http://m.blog.csdn.net/blog/jibing57/8446121


    还有工具http://tool.chinaz.com/regex/
    arnofeng
        9
    arnofeng  
       2014-09-05 02:30:31 +08:00 via Android
    上面说错了。(?![diq])\w 这个对的,然后加\b不对。

    要是精确的话,大括号加个非贪婪模式。

    大半夜,不太清醒。不好意思。
    viowan
        10
    viowan  
       2014-09-05 09:44:13 +08:00
    ^(?:(?![diq])[a-z])*$
    貌似这个可以,用了环视,字符在a-z之间,但是环视的右边不能是diq
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3156 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:49 · PVG 21:49 · LAX 05:49 · JFK 08:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.