JS Regexp限制

时间:2015-04-25 05:58:58

标签: javascript regex

非常简单,但无论如何都找不到它.. 我如何限制正则表达式结果?

示例字符串:

io=G4-WfdxQHfBLrcB7AAAC; connect.sid=s%3AKdRP6Bh_bFsN_9Br4TfTykVSqenUgpDA.ighSSEVvoIInT%2Fc7z%2B2HaQQRzwS6p7gkEqJs2ZQbw1k; sid=s%3ACte80repoZLXoDfMqABqrNcg9qdO0a5L.1I%2BFc61dYeyqNhmjxCVMiZEPgLvgolvMIohLAx22WYo

我目前的正则表达式:

/\ssid=(.*)/

目前的结果是:

sid=s%3ACte80repoZLXoDfMqABqrNcg9qdO0a5L.1I%2BFc61dYeyqNhmjxCVMiZEPgLvgolvMIohLAx22WYo

期望的结果是:

s%3ACte80repoZLXoDfMqABqrNcg9qdO0a5L.1I%2BFc61dYeyqNhmjxCVMiZEPgLvgolvMIohLAx22WYo

我该如何改进?

1 个答案:

答案 0 :(得分:1)

您可以将第一个捕获组用作

match = str.match(/\ssid=(.*)/);
// match[0] will contain match after the `=`

或者更简单地说你可以写

match = str.match(/\ssid=(.*)/)[1];

示例

str = "io=G4-WfdxQHfBLrcB7AAAC; connect.sid=s%3AKdRP6Bh_bFsN_9Br4TfTykVSqenUgpDA.ighSSEVvoIInT%2Fc7z%2B2HaQQRzwS6p7gkEqJs2ZQbw1k; sid=s%3ACte80repoZLXoDfMqABqrNcg9qdO0a5L.1I%2BFc61dYeyqNhmjxCVMiZEPgLvgolvMIohLAx22WYo"  
match = str.match(/\ssid=(.*)/)[1];
// Output
// => s%3ACte80repoZLXoDfMqABqrNcg9qdO0a5L.1I%2BFc61dYeyqNhmjxCVMiZEPgLvgolvMIohLAx22WYo

来自MDN

  

(x)

     

匹配x并记住匹配。这些被称为捕获   括号中。

     

例如,/(foo)/匹配并记住“foo bar”中的“foo”。该   可以从结果数组的元素中调用匹配的子字符串   [1],...,[n]或来自预定义的RegExp对象的属性$ 1,   ......,9美元。

     

捕获组会降低性能。如果你不需要的话   要调用的匹配子字符串,更喜欢非捕获括号   (见下文)。