在javascript / node js中使用regExp拆分字符串并获取数组

时间:2017-04-11 12:14:21

标签: javascript node.js regex

我正在编写js代码,以便在使用正则表达式进行拆分后获取元素数组。

 var data = "ABCXYZ88";
 var regexp = "([A-Z]{3})([A-Z]{3}d{2})";
 console.log(data.split(regexp));

它返回 [' ABCXYZ88' ]

但我期待类似的东西 [' ABC'' XYZ'' 88']

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

我修复了你的正则表达式,然后将它与你的字符串匹配并提取相关的捕获组:

var regex = /([A-Z]{3})([A-Z]{3})(\d{2})/g;
var str = 'ABCXYZ88';
let m = regex.exec(str);
if (m !== null) {
   console.log(m.slice(1)); // prints ["ABC", "XYZ", "88"]
}

在您的情况下,我认为您不能像正在尝试那样使用正则表达式拆分,因为似乎没有任何分隔字符可供匹配。为此,你必须有一个像'ABC|XYZ|88'这样的字符串;然后你可以做'ABC|XYZ|88'.split(/\|/g)。 (当然,你不会在这种简单的情况下使用正则表达式。)

答案 1 :(得分:1)

  1. 您的regexp不是RegExp个对象,而是string
  2. 您的捕获组不正确。
  3. String.prototype.split()不是您需要的功能。 split()的作用:
  4. var myString = 'Hello World. How are you doing?';
    var splits = myString.split(' ', 3);
    
    console.log(splits); // ["Hello", "World.", "How"]
    

    您需要什么:

    var data = 'ABCXYZ88';
    var regexp = /^([A-Z]{3})([A-Z]{3})(\d{2})$/;
    var match = data.match(regexp);
    console.log(match.slice(1)); // ["ABC", "XYZ", "88"]
    

答案 2 :(得分:0)

试试这个。我希望这就是你要找的东西。

      var reg = data.match(/^([A-Z]{3})([A-Z]{3})(\d{2})$/).slice(1);

https://jsfiddle.net/m5pgpkje/1/