javascript拆分为非字母数字,并在开始时保留delemiters

时间:2015-12-23 12:08:00

标签: javascript php node.js

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

我的PHP-Reqex看起来像这样:

$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 个答案:

答案 0 :(得分:2)

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

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

  3. JS

  4. 不支持Lookbehinds
  5. 简化它。

  6. 要获得匹配,您应该使用

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