Javascript JS Regexp限制
很简单的事情,但无论如何都找不到。。 如何限制regexp结果 示例字符串:Javascript JS Regexp限制,javascript,regex,Javascript,Regex,很简单的事情,但无论如何都找不到。。 如何限制regexp结果 示例字符串: io=G4-WfdxQHfBLrcB7AAAC; connect.sid=s%3AKdRP6Bh_bFsN_9Br4TfTykVSqenUgpDA.ighSSEVvoIInT%2Fc7z%2B2HaQQRzwS6p7gkEqJs2ZQbw1k; sid=s%3ACte80repoZLXoDfMqABqrNcg9qdO0a5L.1I%2BFc61dYeyqNhmjxCVMiZEPgLvgolvMIohLAx22WYo
io=G4-WfdxQHfBLrcB7AAAC; connect.sid=s%3AKdRP6Bh_bFsN_9Br4TfTykVSqenUgpDA.ighSSEVvoIInT%2Fc7z%2B2HaQQRzwS6p7gkEqJs2ZQbw1k; sid=s%3ACte80repoZLXoDfMqABqrNcg9qdO0a5L.1I%2BFc61dYeyqNhmjxCVMiZEPgLvgolvMIohLAx22WYo
我当前的regexp:
/\ssid=(.*)/
目前的结果是:
sid=s%3ACte80repoZLXoDfMqABqrNcg9qdO0a5L.1I%2BFc61dYeyqNhmjxCVMiZEPgLvgolvMIohLAx22WYo
s%3ACte80repoZLXoDfMqABqrNcg9qdO0a5L.1I%2BFc61dYeyqNhmjxCVMiZEPgLvgolvMIohLAx22WYo
预期结果是:
sid=s%3ACte80repoZLXoDfMqABqrNcg9qdO0a5L.1I%2BFc61dYeyqNhmjxCVMiZEPgLvgolvMIohLAx22WYo
s%3ACte80repoZLXoDfMqABqrNcg9qdO0a5L.1I%2BFc61dYeyqNhmjxCVMiZEPgLvgolvMIohLAx22WYo
我如何改进呢?您可以将第一个捕获组用作
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
从
(十)
匹配x并记住匹配。这些被称为捕获
括号
例如,/(foo)/匹配并记住“foo-bar”中的“foo”。这个
可以从结果数组的元素中调用匹配的子字符串
[1] ,…,[n]或从预定义的RegExp对象的属性$1,
…9美元
捕获组将受到性能惩罚。如果你不需要
要调用的匹配子字符串,首选非捕获括号
(见下文)
捕获组在
=
之后获取所有内容。这不是你想要的吗?是的,我不知道怎么得到它,就像下面描述的。无论如何,谢谢。非常感谢,很有效。那是因为比喻?我组成小组,然后接受它,对吗?@Lazyexpert你明白了!!。由(..)
中的模式匹配的每件事物都从1开始按编号分组。也就是说,第n个()
形成了第n个捕获组,可以使用匹配[n]