首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex:如何将JavaScript子表达式匹配到多维字符串数组中?

Regex:如何将JavaScript子表达式匹配到多维字符串数组中?
EN

Stack Overflow用户
提问于 2009-10-15 02:54:29
回答 3查看 2.7K关注 0票数 3

如何将Regex子表达式匹配拆分到多维字符串数组?

我有一个"myvar“字符串:

1-4:2;5-9:1.89;10-24:1.79;25-99:1.69;100-149:1.59;150-199:1.49;200-249:1.39;250+:1.29

这是QuantityLow - QuantityHigh : PriceEach ;的重复

我用了这个"myreg“Regex /(\d+)[-+](\d*):(\d+\.?\d*);?/g

var myarray = myvar.match(myreg);一起使用

产生了:

myarray[0] = "1-4:2;"

myarray[1] = "5-9:1.89;"

myarray[2] = "10-24:1.79;"

myarray[3] = "25-99:1.69;"

myarray[4] = "100-149:1.59;"

myarray[5] = "150-199:1.49;"

myarray[6] = "200-249:1.39;"

myarray[7] = "250+:1.29"

太棒了!但是,我需要Q1 - Q2 :P进一步断开字符串,如上面所述。正则表达式已经设置为用括号标识部件。我认为这可以用一个Regex表达式,或者至少两个表达式来完成,而不是设置某种循环。

感谢您的反馈。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-15 03:20:23

您没有说出您期望的确切输出,但我认为类似的输出可能是直观的。

给予:

代码语言:javascript
复制
var myvar = "1-4:2;5-9:1.89;10-24:1.79;25-99:1.69;100-149:1.59;150-199:1.49;200-249:1.39;250+:1.29";

捕捉所有子匹配的一个快速方法是:

代码语言:javascript
复制
var matches = [];
myvar.replace(/(\d+)[-+](\d*):(\d+\.?\d*);?/g, function(m, a, b, c) {
    matches.push([a, b, c])
});

(注意:您可以使用一个更具可读性的循环捕获相同的输出):

代码语言:javascript
复制
var myreg = /(\d+)[-+](\d*):(\d+\.?\d*);?/g;
var matches = [];
while(myreg.exec(myvar)) {
    matches.push([RegExp.$1, RegExp.$2, RegExp.$3])
}

无论哪种方式,结果都是一系列匹配:

代码语言:javascript
复制
matches[0]; // ["1", "4", "2"]
matches[1]; // ["5", "9", "1.89"]
matches[2]; // ["10", "24", "1.79"]
matches[3]; // ["25", "99", "1.69"]
matches[4]; // ["100", "149", "1.59"]
matches[5]; // ["150", "199", "1.49"]
matches[6]; // ["200", "249", "1.39"]
matches[7]; // ["250", "", "1.29"]
票数 8
EN

Stack Overflow用户

发布于 2009-10-15 03:19:15

代码语言:javascript
复制
var r = /(\d+)[-+](\d*):(\d+\.?\d*);?/g;
var s = "1-4:2;5-9:1.89;10-24:1.79;25-99:1.69;100-149:1.59;150-199:1.49;200-249:1.39;250+:1.29";
var match;
while ((match = r.exec(s)) != null) {
  console.log("From " + match[1] + " to " + match[2] + " is " + match[3]);
}

console.log()调用是Firefox/Firebug调用。当然,您可以使用alert()document.write()或其他合适的工具。

参见RegExp对象引用,特别是RegExp方法,最显著的是RegExp.exec()

票数 2
EN

Stack Overflow用户

发布于 2009-10-15 07:00:46

最简单的方法是使用字符串的拆分方法:

代码语言:javascript
复制
var myvar = "1-4:2;5-9:1.89;10-24:1.79;25-99:1.69;100-149:1.59;150-199:1.49;200-249:1.39;250+:1.29";
myvar.split(';');

产生了:

代码语言:javascript
复制
["1-4:2", "5-9:1.89", "10-24:1.79", "25-99:1.69", "100-149:1.59", "150-199:1.49", "200-249:1.39", "250+:1.29"]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1570066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档