在 javascript 之前和之后存储单词的正则表达式

Regex to store a word before and after in javascript

我正在编写 selenium 脚本。因此对于字符串“1 - 8 of 8 items”中的那个。我必须找到单词 "of" 之前的数字和单词 "of" 之后的数字,将其存储在两个变量中并检查它们是否相等。

因此,首先我使用正则表达式 "of\s+\b(\w+)\b" 获取 "of" 之前的值,使用正则表达式“(\S+)\s*of”获取 "of" 之后的值。我面临的问题是,当我使用此正则表达式时,结果带有单词 "of"(8 个,共 8 个)。我可以使用什么正则表达式来获取 "of" (8,8) 前后的值,而不包括单词 "of"。这是使用 javascript。

我不是正则表达式专家,但我试过了。

var findings  = "1 - 8 of 8 items 1 - abc of ghi items".match(/\w+ of \w+/g);
var collection = [];
findings.forEach(function(item){
    var words = item.split(' ');
    collection.push({first: words[0], second: words[2]});
});

console.log(collection);

此正则表达式将为您提供 of:

之前的号码
"1 - 7 of 8 items".match(/\d+(?=\s+of\s+)/)

'1 - 8 of 8 items'.match(/of\s+\b(\w+)\b/)[1]给出第一个8.

'1 - 8 of 8 items'.match(/(\S+)\s*of/)[1] 给出第二个 8.

备选

我会这样写:

'1 - 8 of 8 items'.match(/(\d+) of/)[1]为第一。

'1 - 8 of 8 items'.match(/of (\d+)/)[1]第二个

您可以在非数字处拆分字符串:

var ar = "1 - 8 of 8 items".split(/[^\d]+/)

这给出了

Array [ "1", "8", "8", "" ]

现在你可以比较数组的第二个和第三个元素

ar[1] == ar[2]

单独做是没有用的,它会给出错误的结果。

同时找到两者。 (\d+)\s+of\s+(\d+).
之前在捕获组 1 中,之后在捕获组 2 中。

进行搜索。如果您不知道如何访问捕获组,请阅读一些内容。