Regex 使用匹配的表达式作为匹配的起点

Regex 使用匹配的表达式作为匹配的起点,regex,Regex,我正在使用,JavaScript中不支持一些向前看和向后看 是否仍然可以使用匹配的条件来表示匹配的开始,使用另一个条件来表示匹配的结束,而不包括在匹配中 例如,如果我使用[tag]仅获取标记, 或者如果我有{abc1,def}来匹配abc1和def 当字符串很短时很容易得到这个结果,但我希望它能从一个较长的字符串中找到这个结果,只有当这个组被{}包围,单个项目被`字符包围时,如果你没有JavaScript中的lookbehind,你可以使用一个非捕获组或根本没有组来代替正向lookbehind。

我正在使用,JavaScript中不支持一些向前看和向后看

是否仍然可以使用匹配的条件来表示匹配的开始,使用另一个条件来表示匹配的结束,而不包括在匹配中

例如,如果我使用[tag]仅获取标记, 或者如果我有{abc1,def}来匹配abc1和def


当字符串很短时很容易得到这个结果,但我希望它能从一个较长的字符串中找到这个结果,只有当这个组被{}包围,单个项目被`字符

包围时,如果你没有JavaScript中的lookbehind,你可以使用一个非捕获组或根本没有组来代替正向lookbehind。当然,这将成为整个匹配的一部分,因此您需要将您实际想要匹配的部分括在捕获括号中,然后不是计算整个匹配,而是只计算该捕获组

所以不是

(?<=foo)bar
在第一个版本中,匹配结果栏将位于backreference$0中。在第二个版本中,$0将等于foobar,但$1将包含bar

但是,如果一场比赛和下一场比赛的后视重叠,这将失败。例如,如果要匹配由字母包围的数字

(?<=[a-z])[0-9](?=[a-z])

将只匹配1和3。

我想您可以始终使用分组:

m = "blah{abc 1, def}blah".match(/\{(.*?)\}/)
在哪里


该regexpal页面不显示生成的子组(如果有的话)。

这些都是有意义的,但我无法使用?这就是为什么我写了而不是?您在JavaScript中有前瞻,只是没有落后。
[a-z]([0-9])[a-z]
m = "blah{abc 1, def}blah".match(/\{(.*?)\}/)
m[0] = "{abc 1, def}"
m[1] = "abc 1, def"