在JS中使用Regex在字符串中的特定位置查找特定模式

时间:2014-11-10 18:58:32

标签: javascript regex

我对正则表达式并不是特别强。基本上,我有以下字符串:

Showing 1-20 of 748 results.

我想提取"748",将其转换为数字,并将其用于比较。正如预期的那样,"Showing""of""results"预计不会改变,但数字可以改变。我有几个解决方案。第一个是使用lookbehinds,但我不相信JS支持它们。第二个是做一个更直率的方法,也许使用match()查找字符串中的所有数字,并将元素放在返回数组中的第三个索引处(应该是"748")。

有关最佳方法的任何想法吗?

2 个答案:

答案 0 :(得分:1)

我会使用正则表达式:

Showing \d+-\d+ of (\d+) results\. 

其中\d+表示匹配1位或更多位数。您想要查找的数字周围的括号称为捕获组。

因此,如果搜索字符串位于str中,则生成的JavaScript可能如下所示:

var resultsRe = /Showing \d+-\d+ of (\d+) results\./;
var numResults = resultsRe.exec(str);
console.log("There are " + numResults + " results.");

答案 1 :(得分:0)

对于一个简单的方法,您可以执行以下操作:

(\d+)\sresults

它只是在单词结果之前直接捕获整数。