js 的正则阉割了多少?反向预查没有吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
wszgrcy
V2EX    程序员

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

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

    就是?<=,虽然说不支持,但是我在 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     Solana     5674 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 06:09 PVG 14:09 LAX 23:09 JFK 02:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86