JavaScript 正则表达式 - 从单词旁边提取数字

Posted

技术标签:

【中文标题】JavaScript 正则表达式 - 从单词旁边提取数字【英文标题】:JavaScript Regular Expression - Extract number from next to word 【发布时间】:2010-11-16 11:13:06 【问题描述】:

很久没接触正则表达式了。这很简单,但我正在把头发拉出来。

我有一个从 DOM "MIN20, MAX40" 得到的字符串,如下所示。我希望能够在 javascript 中使用正则表达式来提取 MIN 旁边的整数和 MAX 旁边的整数,并将其放入单独的变量 minmax 中。我想不出办法。

感谢曾经帮助过我的人,您将成为救生员!

干杯

【问题讨论】:

【参考方案1】:

你可以使用:

var input   = "MIN20, MAX40";
var matches = input.match(/MIN(\d+),\s*MAX(\d+)/);
var min = matches[1];
var max = matches[2];

JSfiddle link

【讨论】:

这对我有用。虽然如果需要两个以上的值,Tim Down 的示例很好。谢谢大家 感谢您为未来的读者指出 Tim Down 的例子【参考方案2】:

我认为这可行:

var matches = "MIN20, MAX40".match(/MIN(\d+), MAX(\d+)/);
var min = matches[1]; 
var max = matches[2];

【讨论】:

+1!简洁明了(您可以添加对 matches 的检查以使其更好)。 如果我们这么简单,就不需要正则表达式了。我们可以做var str = "MIN20, MAX40", min = str.slice(3, 5), max = str.slice(10, 12); 或更简单的min = 20, max = 40; :D 请将您的示例复制到另一个小提琴。 Jsfiddle 慢得要命。【参考方案3】:

以下将提取“MIN”和“MAX”之后的数字到整数数组中,称为minsmaxes

var mins = [], maxes = [], result, arr, num;
var str = "MIN20, MAX40, MIN50";

while ( (result = /(MIN|MAX)(\d+)/g.exec(str)) ) 
    arr = (result[1] == "MIN") ? mins : maxes; 
    num = parseInt(result[2]);
    arr.push(num);


// mins: [20, 50]
// maxes: [40]

【讨论】:

【参考方案4】:
var str = "MIN20, MAX40";
value = str.replace(/^MIN(\d+),\sMAX(\d+)$/, function(s, min, max) 
    return [min, max]
);

console.log(value); // array

【讨论】:

它不会生成数组。 typeof value == "string"(至少在谷歌浏览器中) 多么奇怪...我在 FF 3.6.12 中尝试过,无论如何 codaddict 解决方案是最好的【参考方案5】:

这应该可以解决问题。

var str='MIN20, MAX40';

min = str.match(/MIN(\d+),/)[1];
max = str.match(/MAX(\d+)$/)[1];

【讨论】:

以上是关于JavaScript 正则表达式 - 从单词旁边提取数字的主要内容,如果未能解决你的问题,请参考以下文章

用于匹配单词的 javascript 正则表达式模式,具有自定义单词边界

教你轻松搞定javascript中的正则

javascript 正则表达式匹配任何脚本中所有非单词字符的正确正则表达式范围是多少?

JavaScript正则表达式匹配不区分大小写的单词? [复制]

Javascript正则表达式:找到一个不跟空格字符的单词

JavaScript正则表达式二