Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 学习正则表达式,是否可以在*选择之后*收集数据?_Javascript_Jquery_Regex - Fatal编程技术网

Javascript 学习正则表达式,是否可以在*选择之后*收集数据?

Javascript 学习正则表达式,是否可以在*选择之后*收集数据?,javascript,jquery,regex,Javascript,Jquery,Regex,例如,如果我有这个字符串: "color=green&animal=panda" 我是否可以使用正则表达式返回绿色,因为它在颜色=之后?因为JavaScript不支持向后看(很遗憾),所以只能通过包含前面的子字符串来实现。组绿色,并参考组 var string = "color=green&animal=panda"; var pattern = /color=(green)/; var match = pattern.exec(string); var wantedstrin

例如,如果我有这个字符串:

"color=green&animal=panda"

我是否可以使用正则表达式返回
绿色
,因为它在
颜色=
之后?

因为JavaScript不支持向后看(很遗憾),所以只能通过包含前面的子字符串来实现。组
绿色
,并参考组

var string = "color=green&animal=panda";
var pattern = /color=(green)/;
var match = pattern.exec(string);
var wantedstring = match[1];
不过,Look aheads确实存在,因此以下内容可用于匹配“green”,但不能匹配“green”:

当然可以:

"color=green&animal=panda".replace(/.*color=(.+?)&.*/, '$1') === 'green';

该模式提取
颜色=
后面的任何字符,后面跟一个符号。

是的,这是可能的。我们称之为匹配组。以下是您的正则表达式可能是什么:

/color=(.+?)(?:&|#|$)/
它将匹配括号之间的所有内容。在本例中,字符串
color=
之后直到第一个
&
字符的任何内容(
+


正则表达式可以是
/color=([^&]+)/
,有关解释,请参阅Tomalak注释:)

是的,您可以使用正则表达式,但它们看起来像url编码的参数。您最好找到一个函数将其解码为对象。(这也可能使用正则表达式,但至少它是一个更通用的解决方案,可以一次捕获所有变量)不过,我建议使用
/color=([^&]+)/
。如果
颜色
是字符串中的最后一个参数,则您的操作将失败。不要忘记,您需要将
decodeURIComponent
应用于匹配以获得实际值。我已经编辑了正则表达式,
(?:&|$)
而不是
&
现在匹配
&
字符,或者如果存在
哈希,字符串的结尾仍然会失败。就拿字符类来说,它将是sorter.exact。是的,它可能比较短,但是像这样的负类
[^whatever]
性能不太好,所以当我可以避免它们时,我更愿意这样做:)你从哪里听说的?这是胡说八道,尤其是作为这样一种广义的说法@不,不是真的。匹配一点上下文并返回组的内容是正则表达式的标准过程。你可能想得太多了。
/color=(.+?)(?:&|#|$)/