在Javascript中,我想从字符串中提取数组。
字符串是

var str = "abc (24 314 83 383)(-256)sa 0 (24 314) 1"


我希望优先级是括号中的文本,然后是其他由空格分隔的文本。因此,对于以上示例,结果应为:

result[0] = "abc"
result[1] = "24 314 83 383"
result[2] = "-256"
result[3] = "sa"
result[4] = "0"
result[5] = "24 314"
result[6] = "1"


我试过了

var pattern = /(.*?)[\s|\)]/g;
result = str.match(pattern);


但结果是:abc ,(24 ,314 ,83 ,383),(-256),sa ,0 ,(24 ,314),

最佳答案

这是使用正则表达式对象和exec的解决方案,它比使用str.match(/\w+|\((.*?)\)/g).map(e => e.replace(/^\(|\)$/g, ""))之类的过滤括号更安全:



var str = "abc (24 314 83 383)(-256)sa 0 (24 314) 1";
var reg = /\w+|\((.*?)\)/g;
var match;
var res = [];

while (match = reg.exec(str)) {
  res.push(match[1] || match[0]);
}

console.log(res);

关于javascript - 提取Javascript中的正则表达式中的文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53843355/

10-12 15:20