假设我有一个字符串“&something=variable&something_else=var2”
我想在 &something= 和 & 之间进行匹配,所以我将编写一个如下所示的正则表达式:
/(&something=).*?(&)/
.match() 的结果将是一个数组:
["&something=variable&", "&something=", "&"]
我总是通过手动替换开始和结束元素来解决这个问题,但是有没有办法完全不将它们包含在匹配结果中?
假设我有一个字符串“&something=variable&something_else=var2”
我想在 &something= 和 & 之间进行匹配,所以我将编写一个如下所示的正则表达式:
/(&something=).*?(&)/
.match() 的结果将是一个数组:
["&something=variable&", "&something=", "&"]
我总是通过手动替换开始和结束元素来解决这个问题,但是有没有办法完全不将它们包含在匹配结果中?
您使用了错误的捕获组。你应该使用这个:
/&something=(.*?)&/
这意味着不是捕获您不想要的东西(分隔符),而是捕获您想要的东西(数据)。
您根本无法避免它们出现在您的匹配结果中,但您可以更改它们的显示方式并使其对您更有用。
如果您将匹配模式更改为然后使用匹配结果数组/&something=(.+?)&/
的测试字符串是"&something=variable&something_else=var2"
["&something=variable&", "variable"]
第一个元素始终是整个匹配项,但第二个元素将是从括号中捕获的部分,这通常更有用。
我希望这有帮助。
如果您试图variable
摆脱字符串,使用带有反向引用的替换将得到您想要的:
"&something=variable&something_else=var2".replace(/^.*&something=(.*?)&.*$/, '$1')
给你
"variable"