首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript正向后选择

Javascript正向后选择
EN

Stack Overflow用户
提问于 2014-12-03 06:59:11
回答 2查看 870关注 0票数 0

因此,js显然不支持lookbehind。

我想要的是在javascript中有效的regex,它可以模仿这种行为。

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

代码语言:javascript
复制
12 - 23
12 - -23
-12 - 23
-12 - -23

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

所以我的弦乐是:

代码语言:javascript
复制
12-23
12--23
-12-23
-12--23

前2例为第3例,后2例为第4例。

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

代码语言:javascript
复制
12(-)23
12(-)-23
-12(-)23
-12(-)-23

这可以通过积极的查找实现:

代码语言:javascript
复制
(?<=[0-9])\- 

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

有人能帮忙吗?

EN

Stack Overflow用户

回答已采纳

发布于 2014-12-03 07:07:23

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

代码语言:javascript
复制
input.match(/(-?\d+) *- *(-?\d+)/)

这两个数字将在第一组和第二组中。

通过使用来检查-前面是否有一个单词字符,可以编写一个regex,该正则表达式适用于消毒输入(没有空格,并保证有效,如问题中所示):

代码语言:javascript
复制
\b-

由于净化字符串中唯一的单词字符是0-9,因此我们实际上是在检查-前面是否有一个数字。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27265515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档