因此,js显然不支持lookbehind。
我想要的是在javascript中有效的regex,它可以模仿这种行为。
具体来说,我有一个由数字和连字符组成的字符串来表示范围。就像在,
12 - 23
12 - -23
-12 - 23
-12 - -23请忽略这些空格。当然,这是唯一可能有不同数目的情况。我想要的是匹配分隔数字的第一个连字符,而不是减号。换句话说,第一个连字符后面跟着一个数字。但数字不应该是比赛的一部分。
所以我的弦乐是:
12-23
12--23
-12-23
-12--23前2例为第3例,后2例为第4例。
我需要的单个正则表达式将与括号中的字符匹配。
12(-)23
12(-)-23
-12(-)23
-12(-)-23这可以通过积极的查找实现:
(?<=[0-9])\- 但javascript不支持这一点。我想要一个正则表达式,它本质上做同样的事情,并且在js中是有效的。
有人能帮忙吗?
发布于 2014-12-03 07:07:23
我不知道为什么要匹配分隔连字符,而不只是匹配整个字符串并捕获数字:
input.match(/(-?\d+) *- *(-?\d+)/)这两个数字将在第一组和第二组中。
通过使用来检查-前面是否有一个单词字符,可以编写一个regex,该正则表达式适用于消毒输入(没有空格,并保证有效,如问题中所示):
\b-由于净化字符串中唯一的单词字符是0-9,因此我们实际上是在检查-前面是否有一个数字。
https://stackoverflow.com/questions/27265515
复制相似问题