嗨,我在Regex上遇到了一个小问题,该问题在野生动物园中不起作用。
这是问题:
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] + "'");
}