就是?<=,虽然说不支持,但是我在 chrome 上试了下,能进行匹配,node10 也能这么写 但是就我了解的资料来看,js 的正则确实不是完全版的,那么有没有相关资料来说明下,到底差了多少 ps,最近玩正则发现真是上瘾了,感觉这东西啥都能查出来,
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 版 |
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 上面的)除去递归之外,其他的都应该会支持。 |
3
Sparetire 2019-01-16 01:56:24 +08:00 via Android
写 node 的话就只管用好了,写前端就掂量下目标用户吧。。
|
4
wuhaochen999 2019-01-16 06:10:32 +08:00
正则? 你说的是 PCRE 吧
|
5
wszgrcy OP @Kimyx 感谢,但是第三版的书。。。我记得是 12 年吧,6 年过去了,js 这也没啥更新日志提示。。。真是蛋疼
|
8
wszgrcy OP @wuhaochen999 我记得正则还有 posix 不过用的语言比较少是吧
|
9
nifury 2019-01-16 07:43:00 +08:00
曾经我也以为正则啥都能查出来,直到我试图用正则来解析 html...
跑题了跑题了 |
11
lzvezr 2019-01-16 08:26:31 +08:00 via Android 1
推荐一个网站,可以查一下 nodejs 实现到了什么程度 https://node.green
|
12
gam2046 2019-01-16 08:33:28 +08:00
html 这样的类 xml 本文(例如 AndroidManifest 这样的文件),其实用 xpath 来检索,真的很方便。
当然用下面说的 DOM 解析同样也很方便。相比之下,用正则来做这个事情,就有点繁琐了。 |
13
66beta 2019-01-16 08:35:00 +08:00 via Android
node 你可以自己决定版本啊,用户浏览器就看用户灵性了
|
14
reus 2019-01-16 08:48:28 +08:00
正则哪来什么“完全版”,就是实现多少而已
|
15
rus4db 2019-01-16 09:08:57 +08:00
|
16
azh7138m 2019-01-16 09:21:23 +08:00 via Android
@wszgrcy changelog 有的,你看到前端的 es 年份 ,就是那一年 js 的 changelog :D
|
18
Sparetire 2019-01-16 13:11:15 +08:00 via Android
@wszgrcy 标准支持的特性,最新的 Node 基本上都支持了,但是不知道你说的完全体是什么。。如果你要拿正则和 perl 去比,那肯定还是少些什么
|
19
momocraft 2019-01-16 13:16:30 +08:00
形式语言中的正则按现在的语法写出来可能只有 `[]|()+*?{}` // 其中()是优先级
也许不能说是阉割(除非把 PCRE 等带无数扩展的实现当成“真正的正则”) |