【发布时间】:2020-04-03 20:02:14
【问题描述】:
我们使用Highlight.js 在我们的网络应用程序中突出显示语法。几个月来,我们在美国、印度、澳大利亚等地的客户一直很好地使用这种方法,直到今天仍然如此。
我们刚刚在以色列特拉维夫迎来了第一位客户,他们在多个浏览器和操作系统(包括最新的 Chrome 67.0.3396.99(官方版本)(64 位)和 Mac OSX)中遇到了一个奇怪的问题
curl https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js 返回带有无效正则表达式的文件:
/([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\s*,\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\s+)+[a-zA-Z_]\w*\s*\(/
谁能猜到为什么会这样? CDN 是否只是为在以色列提出的请求返回不同的文件?
【问题讨论】:
-
您可能很容易see at regex101 和
€-Ê出现故障。 -
@WiktorStribiżew 是的,但试试
curl https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js我猜你会发现这个正则表达式是正确的。为什么该文件在美国有正确的正则表达式,但在以色列却没有? -
这是一个编码问题。
À-ʸ应替换为\u00C0-\u02B8(或者,在字符串文字中,\\u00C0-\\u02B8) -
@WiktorStribiżew 我明白了,谢谢。你会建议我们如何解决这个问题?在我们自己的 CDN 上自行托管
highlight.min.js的版本? -
抱歉,我无能为力。也许,应该做一个错误报告。可能有一种方法可以模拟不同的语言环境。
标签: regex cdn highlight.js