2016-05-24 73 views
-1

它的運動的一部分任務是:正則表達式 - 僅匹配字符串的一部分

  1. 如果第一個參數是唯一的URL,然後返回URL +第二ARG(這是一個ID號)//在我的代碼工作
  2. 如果第一個參數(URL),包括已經在ID然後與第二ARG(同上),例如http://www.google.com?ID=111對攻ID成爲http://www.google.com?ID=222

我的代碼是錯誤的,對建議感到高興!

var first = "http://www.google.com?ID=111"; 
var second = "ID=222"; 

function searching(){ 
    var update=""; 
    if (arguments[0]==/^\[email protected]\w+\.com$/i){ 
     return arguments[0]+"?"+arguments[1]; 
    } 
    else { 
     update=arguments[0].match(/(\[email protected]\w+\.com) \?\w+\d/i); 
    } 
    return update + "?" +arguments[1]; 
} 

searching(first, second); 
+1

你的正則表達式面前'\一個空格'? ,但網址中沒有空格。 – Barmar

+0

爲什麼在沒有參數時使用參數調用函數? – Barmar

+0

您正在明確掃描.com域。這是練習的一部分嗎? –

回答

0

您可以檢查?,如果第一個參數包含符號'?'然後得到使用.split('?')[0]第一部分(URL),並添加第二個參數arguments[1],否則只是directely添加的第二個參數的第一個參數(URL):

function searching() 
{ 
    if (arguments[0].indexOf('?')!=-1) 
     return arguments[0].split('?')[0]+"?"+arguments[1]; 
    else 
     return arguments[0]+"?"+arguments[1]; 
} 

希望這有助於。

+0

感謝但鍛鍊是關於使用正則表達式.. – learningcoding

1

你不能只比較一個字符串與==的正則表達式。基本上你的選擇是match, test, replace, and split。你的正則表達式btw有一個\w當你想要一個w,應該是:/www\.\w+\.com$/i - 我只是縮短了它甚至更遠。當涉及到javascript中的testing for valid URL時,會有一百萬次正則表達式驗證。一般情況下,我想,你應該建立一個「足夠好」的正則表達式爲你的使用情況:在這裏我們只關心如果查詢參數是存在的,或不:

var first = "http://www.google.com?ID=111"; 
var second = "ID=222"; 
function searching(){ 
    var update=""; 
    if (/^.*\.com$/i.test(arguments[0])){ 
     //pattern just checks end of string to see if query param is present. 
     return arguments[0]+"?"+arguments[1]; 
    } 
    else { 
     update=arguments[0].replace(/ID=\d+/, second); // 
    } 
    return update; 
} 
searching(first, second); 
+0

謝謝,你能解釋if(/^.* \。com $ /。test(arguments [0])){爲什麼(我寫的):\t if(arguments [0] ==/^ \ www。\ w + \。com $/i){是錯的? – learningcoding

+0

好的,我把它改爲if(arguments [0] .match(/^www \。\ w + \。com $/i)){ update = arguments [0] +「?」+ arguments [1]; }但那也不對?! – learningcoding

+0

這是錯誤的。 'match'返回一個匹配對象,並且不會執行你想要的'replace'。 – sweaver2112