Javascript Regex,重新使用一个组来加工另一个组

时间:2017-03-05 17:37:28

标签: javascript regex

大家好我想重新使用表达式捕获其他组

例如:

我需要搜索US $4.5-8.8
结构是: Part1-Part2

part1 part2 具有相同的代码,我可以像part一样使用part1,然后在part2中重复使用

我已经将表达式直到4.5-XXXX

US \$([0-9]{1}(?=\.{1})\.{1}[0-9]+)(?=\-)\-

签到:https://regex101.com/r/E2MjWh/1

如何重新使用第一组?在其他lenguague中很容易,但我不能在javascript中做到这一点..

PD:我在正则表达式中需要它,不包括像var等等的javascript代码。

1 个答案:

答案 0 :(得分:1)

首先,看看你的正则表达式:积极的前瞻不是必需的,因为它们只需要与下面的消费子模式相同。 (?=\.{1})\.{1}表示*要求当前位置右侧有一个点,然后匹配点,(?=\-)\-具有类似的含义,需要并匹配-符号。

现在,您问是否可以仅使用正则表达式语法重复模式的相同部分。不,这在JS正则表达式中是不可能的。

您可以使用以下正则表达式匹配整个字符串,如:

/US\s+\$(\d+\.\d+)-(\d+\.\d+)/

请参阅regex demo。当然,您可以添加单词边界(以匹配US作为整个单词)或锚点(以匹配整个输入字符串)或将\d+\.\d+部分替换为\d*\.?\d+(以匹配两个整数)或浮动)以进一步增强模式。

通过将重复部分放入变量并使用构造函数表示法动态构建正则表达式,可以缩短模式:

var price = "\\d*\\.?\\d+";
var reg = new RegExp("US\\s+\\$(" + price + ")-(" + price + ")");

如有必要,添加所需的修饰符。