如何从黄瓜步骤中捕获正则表达式

How to capture regex from cucumber steps

我需要在黄瓜 js 步骤中基于正则表达式捕获值

用例=>

When I click the '2nd' item in the list

我想在上面的步骤定义中捕获'2'。

我在步骤定义中试过了 =>

When(/^I click the '\d{1,2}(?:st|nd|rd|th)?' item in the list$/, async function(element) {
    await helperActions.clickTopBanksListElement(element);
});

但无法捕获“2”。请任何人提出建议

您只需要使用括号捕获数字:'(\d{1,2})(?:st|nd|rd|th)?'

此外,您不需要将数字限制为一个或两个字符。使用 (\d+) 将捕获一位或多位数字。我也不确定您为什么要在 st、nd、rd 和 th 缩写的反向引用的开头包含 ?: 个字符。

When(/^I click the '(\d+)(st|nd|rd|th)?' item in the list$/, async function(element) {
    await helperActions.clickTopBanksListElement(element);
});

或者,您不需要引号:

When(/^I click the (\d+)(st|nd|rd|th)? item in the list$/, async function(element) {
    await helperActions.clickTopBanksListElement(element);
});

给你:

When I click the 2nd item in the list

读起来更像是你真正想写这句话的方式。