非常简单,但无论如何都找不到它.. 我如何限制正则表达式结果?
示例字符串:
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
我该如何改进?
答案 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美元。
捕获组会降低性能。如果你不需要的话 要调用的匹配子字符串,更喜欢非捕获括号 (见下文)。