首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

js 的正则阉割了多少?反向预查没有吗?

  •  
  •   wszgrcy · 35 天前用 Android 发布 · 1901 次点击
    这是一个创建于 35 天前的主题,其中的信息可能已经有所发展或是发生改变。

    就是?<=,虽然说不支持,但是我在 chrome 上试了下,能进行匹配,node10 也能这么写 但是就我了解的资料来看,js 的正则确实不是完全版的,那么有没有相关资料来说明下,到底差了多少 ps,最近玩正则发现真是上瘾了,感觉这东西啥都能查出来,

    19 回复  |  直到 2019-01-16 13:16:30 +08:00
        1
    Kimyx   35 天前   ♥ 4
    ECMAScript 正则表达式不支持的特性
     匹配字符串开始和结尾的 \A 和 \Z 锚
     向后查找( lookbehind )
     并集和交集类
     原子组( atomic grouping )
     Unicode 支持(单个字符除外,如\uFFFF )
     命名的捕获组
     s ( single,单行)和 x ( free-spacing,无间隔)匹配模式
     条件匹配
     正则表达式注释

    ——「 JavaScript 高级程序设计」第 3 版
        2
    azh7138m   35 天前 via Android   ♥ 2
    js 标准是不断更新的,https://github.com/tc39/proposal-regexp-lookbehind
    Lookbehind 是 chrome62 增加的。
    关于命名组 https://github.com/tc39/proposal-regexp-named-groups
    其实标准就在那里,比看书好多了。
    chrome 支持这些特性总归是要 v8 支持他们的,那么这么看,js (在 chrome 上面的)除去递归之外,其他的都应该会支持。
        3
    Sparetire   35 天前 via Android
    写 node 的话就只管用好了,写前端就掂量下目标用户吧。。
        4
    wuhaochen999   35 天前
    正则? 你说的是 PCRE 吧
        5
    wszgrcy   35 天前 via Android
    @Kimyx 感谢,但是第三版的书。。。我记得是 12 年吧,6 年过去了,js 这也没啥更新日志提示。。。真是蛋疼
        6
    wszgrcy   35 天前 via Android
    @azh7138m 感谢,前端也用(用户用。。。)后端有时候自己也写。。
        7
    wszgrcy   35 天前 via Android
    @Sparetire 所以说 node 下基本上已经是完全体了,没什么缺陷了?
        8
    wszgrcy   35 天前 via Android
    @wuhaochen999 我记得正则还有 posix 不过用的语言比较少是吧
        9
    nifury   35 天前
    曾经我也以为正则啥都能查出来,直到我试图用正则来解析 html...
    跑题了跑题了
        10
    wszgrcy   35 天前 via Android
    @nifury 我一般都用 dom ~
        11
    lzvezr   35 天前 via Android   ♥ 1
    推荐一个网站,可以查一下 nodejs 实现到了什么程度 https://node.green
        12
    gam2046   35 天前
    html 这样的类 xml 本文(例如 AndroidManifest 这样的文件),其实用 xpath 来检索,真的很方便。

    当然用下面说的 DOM 解析同样也很方便。相比之下,用正则来做这个事情,就有点繁琐了。
        13
    66beta   35 天前 via Android
    node 你可以自己决定版本啊,用户浏览器就看用户灵性了
        14
    reus   35 天前
    正则哪来什么“完全版”,就是实现多少而已
        15
    mikukonai   35 天前
    ES6 已经有了。可以看看阮一峰的文章:

    http://es6.ruanyifeng.com/#docs/regex
        16
    azh7138m   35 天前 via Android
    @wszgrcy changelog 有的,你看到前端的 es 年份 ,就是那一年 js 的 changelog :D
        17
    wszgrcy   35 天前 via Android
    @mikukonai 感谢,骑驴找驴了
        18
    Sparetire   34 天前 via Android
    @wszgrcy 标准支持的特性,最新的 Node 基本上都支持了,但是不知道你说的完全体是什么。。如果你要拿正则和 perl 去比,那肯定还是少些什么
        19
    momocraft   34 天前
    形式语言中的正则按现在的语法写出来可能只有 `[]|()+*?{}` // 其中()是优先级

    也许不能说是阉割(除非把 PCRE 等带无数扩展的实现当成“真正的正则”)
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3151 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 04:58 · PVG 12:58 · LAX 20:58 · JFK 23:58
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1