gpt4 book ai didi

Javascript 正向回顾替代方案

转载 作者:行者123 更新时间:2023-12-03 11:17:35 26 4
gpt4 key购买 nike

所以,js 显然不支持lookbehind。

我想要的是一个在 JavaScript 中有效的正则表达式,可以模仿这种行为。

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

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

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

所以我的字符串是:

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

并且匹配应该是前 2 种情况中的第 3 个字符和后两种情况中的第 4 个字符。

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

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

这可以通过使用正向回顾来实现:

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

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

有人可以帮忙吗?

最佳答案

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

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

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

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

\b-

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

关于Javascript 正向回顾替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27265515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com