V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wszgrcy
V2EX  ›  程序员

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

  •  
  •   wszgrcy · 2019-01-15 23:07:19 +08:00 via Android · 4508 次点击
    这是一个创建于 2174 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    ——「 JavaScript 高级程序设计」第 3 版
    azh7138m
        2
    azh7138m  
       2019-01-16 00:41:17 +08:00 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 上面的)除去递归之外,其他的都应该会支持。
    Sparetire
        3
    Sparetire  
       2019-01-16 01:56:24 +08:00 via Android
    写 node 的话就只管用好了,写前端就掂量下目标用户吧。。
    wuhaochen999
        4
    wuhaochen999  
       2019-01-16 06:10:32 +08:00
    正则? 你说的是 PCRE 吧
    wszgrcy
        5
    wszgrcy  
    OP
       2019-01-16 06:38:21 +08:00 via Android
    @Kimyx 感谢,但是第三版的书。。。我记得是 12 年吧,6 年过去了,js 这也没啥更新日志提示。。。真是蛋疼
    wszgrcy
        6
    wszgrcy  
    OP
       2019-01-16 06:39:52 +08:00 via Android
    @azh7138m 感谢,前端也用(用户用。。。)后端有时候自己也写。。
    wszgrcy
        7
    wszgrcy  
    OP
       2019-01-16 06:41:06 +08:00 via Android
    @Sparetire 所以说 node 下基本上已经是完全体了,没什么缺陷了?
    wszgrcy
        8
    wszgrcy  
    OP
       2019-01-16 06:43:42 +08:00 via Android
    @wuhaochen999 我记得正则还有 posix 不过用的语言比较少是吧
    nifury
        9
    nifury  
       2019-01-16 07:43:00 +08:00
    曾经我也以为正则啥都能查出来,直到我试图用正则来解析 html...
    跑题了跑题了
    wszgrcy
        10
    wszgrcy  
    OP
       2019-01-16 08:05:18 +08:00 via Android
    @nifury 我一般都用 dom ~
    lzvezr
        11
    lzvezr  
       2019-01-16 08:26:31 +08:00 via Android   ❤️ 1
    推荐一个网站,可以查一下 nodejs 实现到了什么程度 https://node.green
    gam2046
        12
    gam2046  
       2019-01-16 08:33:28 +08:00
    html 这样的类 xml 本文(例如 AndroidManifest 这样的文件),其实用 xpath 来检索,真的很方便。

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

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

    也许不能说是阉割(除非把 PCRE 等带无数扩展的实现当成“真正的正则”)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2628 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:29 · PVG 19:29 · LAX 03:29 · JFK 06:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.