我有一个积极的后视 Safari 错误

I have a positive lookbehind Safari error

大家好,我有一个 Regex 的小问题,它在 Safari 中不起作用。

问题是:

Title = "Level 5 All programmes"

我正在尝试将它与正后视分开,以将数字保留在数组的第一项中,如下所示:

Title.split(/(?<=[0-9])/)

我明白了

["Level 5", " all specialisation"]

这很好,但问题是此解决方案在 Safari 中不起作用。

你们知道如何解决这个问题吗?

您可以使用 /(.*?\d+)(\s.*)/ 正则表达式匹配和捕获部分:

var Title = "Level 5 All programmes";
var rx = /(.*?\d+)(\s.*)/;
var m = Title.match(rx);
if (m) {
  console.log("First part: '" + m[1] + "'\nSecond part: '"+ m[2] + "'");
}

/(.*?\d+)(\s.*)/ 正则表达式匹配

  • (.*?\d+) - 第 1 组:除换行符以外的任何零个或多个字符尽可能少,然后是 1+ 位数字
  • (\s.*) - 第 2 组:一个空白字符后跟尽可能多的除换行字符以外的任何零个或多个字符。

要跨行匹配,请将 . 替换为 [^][\s\S]

对于没有第二部分的情况,将第二组设为可选,并在匹配时检查第2组值是否不是undefined:

var Title = "Level 5";
var rx = /(.*?\d+)(\s.*)?/;
var m = Title.match(rx);
if (m) {
  console.log("First part: '" + m[1] + "'");
  if (m[2] !== undefined) console.log("Second part: '"+ m[2] + "'");
}