【问题标题】:HighlightJS invalid regular expressionHighlightJS 无效的正则表达式
【发布时间】: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


【解决方案1】:

所述错误是由于编码问题引起的。将编码指定为"utf-8" 为我解决了这个问题。

在您的 html &lt;head&gt; 标记中包含以下内容。

<meta charset="utf-8">

【讨论】:

  • 从 Highlight.js 10.3.1(今天发布)开始,CDN 可分发(至少是 Javascript 代码部分)都应正确编码为 ASCII,因此不再需要这样做。 (指定charset
猜你喜欢
  • 1970-01-01
  • 2020-08-11
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 2018-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多