因此,js显然不支持后向。

我想要的是在javascript中有效的正则表达式,可以模仿该行为。

具体来说,我有一个由数字和连字符组成的字符串,用于表示一个范围。如

12 - 23
12 - -23
-12 - 23
-12 - -23


请忽略空格。当然,这些是唯一可能的情况,具有不同的数字。
我想要的是匹配第一个连字符,该连字符将数字分隔开并且不是减号。换句话说,第一个连字符后跟一个数字。但是数字不应该是比赛的一部分。

所以我的字符串是:

12-23
12--23
-12-23
-12--23


并且匹配应该是前两个案例中的第三个字符和后两个案例中的第四个字符。

我需要的单个正则表达式应该与方括号中的字符匹配。

12(-)23
12(-)-23
-12(-)23
-12(-)-23


这可以通过使用正向后看来实现:

(?<=[0-9])\-


但是javascript不支持。我想要一个本质上做同样的事情并且在js中有效的正则表达式。

有人可以帮忙吗?

最佳答案

我不知道为什么要匹配定界连字符,而不仅仅是匹配整个字符串并捕获数字:

input.match(/(-?\d+) *- *(-?\d+)/)


这两个数字将属于捕获组1和2。

通过使用\b检查-前面是否有单词字符,可以编写一个适用于经过清理的输入的正则表达式(无空格,并保证是有效的,如问题所示):

\b-


由于清理后的字符串中唯一的单词字符是0-9,因此我们可以有效地检查-后面是否有数字。

09-18 07:29