0

假设我有一个字符串“&something=variable&something_else=var2”

我想在 &something= 和 & 之间进行匹配,所以我将编写一个如下所示的正则表达式:

/(&something=).*?(&)/

.match() 的结果将是一个数组:

["&something=variable&", "&something=", "&"]

我总是通过手动替换开始和结束元素来解决这个问题,但是有没有办法完全不将它们包含在匹配结果中?

4

3 回答 3

2

您使用了错误的捕获组。你应该使用这个:

/&something=(.*?)&/

这意味着不是捕获您不想要的东西(分隔符),而是捕获您想要的东西(数据)。

于 2012-07-22T04:34:07.917 回答
1

您根本无法避免它们出现在您的匹配结果中,但您可以更改它们的显示方式并使其对您更有用。

如果您将匹配模式更改为然后使用匹配结果数组/&something=(.+?)&/的测试字符串是"&something=variable&something_else=var2"["&something=variable&", "variable"]

第一个元素始终是整个匹配项,但第二个元素将是从括号中捕获的部分,这通常更有用。

我希望这有帮助。

于 2012-07-22T04:35:28.813 回答
-1

如果您试图variable摆脱字符串,使用带有反向引用的替换将得到您想要的:

"&something=variable&something_else=var2".replace(/^.*&something=(.*?)&.*$/, '$1')

给你

"variable"
于 2012-07-22T04:45:09.113 回答