2013-03-18 150 views
-5

這2個在做什麼? THX2個正則表達式字符串之間的區別

var m = document.referrer.match(/\&cd=([\d]*)/); 

var m = document.referrer.match(/cd=(.*?)&/); 

哪一個更有效?

+8

有效的是什麼?他們不做同樣的事情。 – 2013-03-18 16:49:10

+2

他們都希望在查詢部分有一個帶有'cd'參數的url,但是一個需要數字並且在其之前有其他查詢參數。另一個允許任何值,但在它之後需要另一個查詢參數。例如他們是相關的,但絕對不一樣。 – 2013-03-18 16:50:23

+1

效率最高,效率最高的就是能夠最快得到正確答案的答案。不知道你想要匹配誰的知識。 – 2013-03-18 16:52:03

回答

3

/\&cd=([\d]*)/ - 匹配任何以「& cd =」開頭的字符串,後跟零個或多個十進制數字。第一個捕獲組是十進制數字。

/cd=(.*)&/ - 開始與「CD =」後跟零個或多個字符直到幷包括第一個「&」任何字符串匹配。第一個捕獲組是「cd =」和「&」之間的所有字符。

它們是相似的,但不等同。你應該使用哪一個取決於你的確切需求。從您的評論看,這聽起來像你想使用:

var m = document.referrer.match(/[?&]cd=(\d+)/); 
+1

'cd =(。*)&'將允許'garbagecd = something&'匹配,但是它排除了'cd =一些東西在最後。如果該值包含除數字之外的其他值,那麼'\&cd =([\ d] *)'可能不會捕獲cd鍵的全部值,並且也不包括'cd'是第一個鍵值對。 – nhahtdh 2013-03-18 17:00:32

+0

使用第一個給我很多0(零)值 - 在這種情況下這是不正常的。澄清 - 我從谷歌搜索結果網址中提取關鍵字排名值。對於之前未說明的道歉。 – user2022284 2013-03-18 17:01:30

+0

@ user2022284你是什麼意思0值?它不匹配輸入字符串?捕獲組是空的?捕獲的值是否爲「0」? – 2013-03-18 17:07:13

相關問題