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

Showing 1-20 of 748 results.


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

关于最佳方法的任何想法?

最佳答案

我会使用正则表达式:

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.");

10-07 12:03