#1 - 2023-6-28 18:12
bangumi大西王 (天生万物以养人,人无一物以报天)
写了个js版本的 autoload.js,行为怎么都不对。

一行一行在控制台输出变量才发现mpv的js引擎有bug


'a(12).mp4'.split(/(\d+)/)


在mpv的mujs引擎里面运行结果是

['a(', '1', '2', ').mp', '4', '']


然而常见的v8和firefox运行结果是

['a(', '12', ').mp', '4', '']

幸好js到处都是 polyfill,连String.prototype.split都有polyfill ...
#2 - 2023-6-28 18:18
(表达能力极差)
记得上次写 js 脚本折腾半天,最后改用 lua 了(bgm38)
#2-1 - 2023-6-28 18:19
bangumi大西王
幸好js生态对于旧的语言引擎有着所有编程语言最好的支持,直接webpack+babel+polyfill一把梭,就可以直接最新的语法写程序,然后让他运行在最旧的js引擎上了(bgm38)
#3 - 2023-6-28 19:20
(プリキュアなりたい)
是不是/(\d+)/正则匹配有问题
#3-1 - 2023-6-28 19:26
bangumi大西王
不是,这个正则是贪婪匹配,就是应该匹配12的
#3-2 - 2023-6-28 19:27
CureDovahkinn🤔
Trim21 说: 不是,这个正则是贪婪匹配,就是应该匹配12的
我是说是不是在这版本的js下贪婪匹配有问题
#3-3 - 2023-6-28 19:29
bangumi大西王
CureDovahkinn🤔 说: 我是说是不是在这版本的js下贪婪匹配有问题
那就没仔细研究了…
#4 - 2023-6-28 21:54
(V1046-R MAHORO)
无法重现,是不是你的mpv版本太老了

mpv 0.35.0 Copyright © 2000-2022 mpv/MPlayer/mplayer2 projects
built on Mon Nov 14 04:47:57 2022
a.js:
var arr = 'a(12).mp4'.split(/(\d+)/);
for (var i = 0; i < arr.length; i++) {
  print(i + ": " + arr[i]);
}


>mpv --script=a.js "dummy.mp4"

输出:

[a] 0: a(
[a] 1: 12
[a] 2: ).mp
[a] 3: 4
[a] 4:
#4-1 - 2023-6-29 01:54
bangumi大西王
实际的例子是 '12'.split(/(\d+)/); mpv的结果是 ["1","2",""]

a(12).mp4 这个例子的结果居然是对的,还是不能太自信…...
#4-2 - 2023-6-29 02:26