我在Safari浏览器中出现了肯定的错误

问题描述 投票:1回答:1

嗨,我在Regex上遇到了一个小问题,该问题在野生动物园中不起作用。

这是问题:

Title = "Level 5 All programmes"

我正在尝试用正向后角将其分隔以将数字保留在数组的第一项中,如下所示:

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

我明白了

["Level 5", " all specialisation"]

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

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

javascript regex safari
1个回答
0
投票

您可以使用/(.*?\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] + "'");
}
© www.soinside.com 2019 - 2024. All rights reserved.