javascript在非字母数字上拆分,并在开始时保持删除


javascript split on non-alphanumeric an keep delemiters at start

我目前正在将一些PHP代码重新编码为node.js服务器的javascript代码。

我的PHP Requex看起来像这样:

$timevalue = "W5D4H7M34S12";
$aSplitted = preg_split('#(?<='d)(?=[a-z])#i', $timevalue);

$aSplitted的结果如下:

["W5","D4","H7","M34","S12"]

这是我在javascript:中尝试的

var aSplitted = timevalue.split(/(?<='d)(?=[a-z])#i/g);

var aSplitted = timevalue.split((?<='d)(?=[a-z])#i);

var aSplitted = timevalue.split('(?<='d)(?=[a-z])#i');

但它不起作用。

我也试过这样的东西:

var aSplitted = timevalue.split(/[^A-Za-z]/);

但它只给了我字符,后面没有数字。

也许你们中的一些人知道解决方案?

  1. split接受分隔符,并按分隔符拆分字符串。您正在查找match

  2. 在JavaScript语法中,#应替换为/。但是您已经组合了PHP和JS语法,这是无效的。

  3. JS 不支持Lookbehinds

  4. 简化它。

要获得匹配,您应该使用

var timevalue = "W5D4H7M34S12";
var aSplitted = timevalue.match(/[a-z]'d+/ig);
document.write(JSON.stringify(aSplitted))