如何在字符之间进行匹配,但不在结果中包含它们

时间:2012-07-22 04:30:34

标签: javascript regex parsing match

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

我想在& something =和&之间进行匹配,所以我会写一个看起来像这样的正则表达式:

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

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

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

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

3 个答案:

答案 0 :(得分:2)

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

/&something=(.*?)&/

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

答案 1 :(得分:1)

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

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

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

我希望这会有所帮助。

答案 2 :(得分:-1)

如果您试图从字符串中获取variable,那么使用替换后缀可以获得您想要的内容:

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

给你

"variable"