这2个在做什么? THX2个正则表达式字符串之间的区别
var m = document.referrer.match(/\&cd=([\d]*)/);
和
var m = document.referrer.match(/cd=(.*?)&/);
哪一个更有效?
这2个在做什么? THX2个正则表达式字符串之间的区别
var m = document.referrer.match(/\&cd=([\d]*)/);
和
var m = document.referrer.match(/cd=(.*?)&/);
哪一个更有效?
/\&cd=([\d]*)/
- 匹配任何以“& cd =”开头的字符串,后跟零个或多个十进制数字。第一个捕获组是十进制数字。
/cd=(.*)&/
- 开始与“CD =”后跟零个或多个字符直到并包括第一个“&”任何字符串匹配。第一个捕获组是“cd =”和“&”之间的所有字符。
它们是相似的,但不等同。你应该使用哪一个取决于你的确切需求。从您的评论看,这听起来像你想使用:
var m = document.referrer.match(/[?&]cd=(\d+)/);
'cd =(。*)&'将允许'garbagecd = something&'匹配,但是它排除了'cd =一些东西在最后。如果该值包含除数字之外的其他值,那么'\&cd =([\ d] *)'可能不会捕获cd键的全部值,并且也不包括'cd'是第一个键值对。 – nhahtdh 2013-03-18 17:00:32
使用第一个给我很多0(零)值 - 在这种情况下这是不正常的。澄清 - 我从谷歌搜索结果网址中提取关键字排名值。对于之前未说明的道歉。 – user2022284 2013-03-18 17:01:30
@ user2022284你是什么意思0值?它不匹配输入字符串?捕获组是空的?捕获的值是否为“0”? – 2013-03-18 17:07:13
有效的是什么?他们不做同样的事情。 – 2013-03-18 16:49:10
他们都希望在查询部分有一个带有'cd'参数的url,但是一个需要数字并且在其之前有其他查询参数。另一个允许任何值,但在它之后需要另一个查询参数。例如他们是相关的,但绝对不一样。 – 2013-03-18 16:50:23
效率最高,效率最高的就是能够最快得到正确答案的答案。不知道你想要匹配谁的知识。 – 2013-03-18 16:52:03