2015-09-13 167 views
0

我正在嘗試使用正則表達式完成2個任務 - 一個函數在第一個字符串中搜索第二個字符串,另一個函數用於替換第二個字符串中所有出現的值第一串。用戶將字符串輸入到文本框中,然後單擊一個按鈕以將結果回讀到段落中。正在使用正則表達式搜索字符串

function searchStrings() { 
    var searchexp1 = document.getElementById("req1string1").value; 
    var searchexp2 = document.getElementById("req1string2").value; 
    var patt = new RegExp("searchexp2"); 
    var res = patt.test("searchexp1"); 

    if (res === true) { 
     document.getElementById("req1result").innerHTML = "We found a match!"; 
    } else if (res === false) { 
     document.getElementById("req1result").innerHTML = "Sorry, those strings don't match."; 
    } 
} 

function replaceString() { 
    var searchexp1 = document.getElementById("req2string1").value; 
    var searchexp2 = document.getElementById("req2string2").value; 
    var str = document.getElementById("req2string1").innerHTML; 
    var res = str.replace("searchexp1"/g , "searchexp2"); 

    document.getElementById("req2result").innerHTML = res; 
} 

都沒有工作,我不明白爲什麼從我使用的教程。我錯過了什麼?

+0

'變種解析度= str.replace( 「searchexp1」/克, 「searchexp2」);''到變種解析度= str.replace( 「searchexp1」, 「searchexp2」,」 g');' –

+0

你有一個錯字,應該是「對不起,那些字符串」,而不是「對不起,那些字符串。 – Arjun

+0

Pranav - 我嘗試了你的建議,但當我刷新頁面時仍然沒有結果。 – Unikkorns

回答

0

replace接受regex模式作爲替換模式。 A RegExp接受修飾符作爲第二個參數。所以你可以這樣做:

new RegExp(yourVariable, 'g'); 

然後將其作爲replace調用模式。

另外,您可能想從您的變量名稱(將值存儲在文本框中)中刪除引號。這樣你實際上會使用它們包含的值,而不是它們的名字(如字符串)。

new RegExp(yourVariable); 

,而不是

new RegExp("yourVariable"); 

此外,假設

var str = document.getElementById("req2string1").innerHTML; 

被設置str輸入框的價值,你應該使用.value代替.innerHTML

var str = document.getElementById("req2string1").value; 

function searchStrings() { 
 
    var searchexp1 = document.getElementById("req1string1").value; 
 
    var searchexp2 = document.getElementById("req1string2").value; 
 
    var patt = new RegExp(searchexp2); 
 
    var output; 
 
    if (patt.test(searchexp1)) { 
 
     output = "We found a match!"; 
 
    } else { 
 
     output = "Sorry, those strings don't match."; 
 
    } 
 
    document.getElementById("req1result").innerHTML = output; 
 
} 
 
function replaceString() { 
 
    var searchexp2 = new RegExp(document.getElementById("req2string2").value, 'g'); 
 
    var searchexp3 = document.getElementById("req2string3").value; 
 
    var str = document.getElementById("req2string1").value; 
 
    document.getElementById("req2result").innerHTML = str.replace(searchexp2, searchexp3); 
 
}
.button { 
 
    border: 1px solid black; 
 
    border-radius: 3px; 
 
} 
 
.button:hover { 
 
    cursor: pointer; 
 
}
<div id="req1result"></div></br> 
 
<span>String:</span> 
 
<input id="req1string1" type"text"/> 
 
<span>Pattern:</span> 
 
<input id="req1string2" type="text"/></br> 
 
<span class="button" onclick="searchStrings();">Search</span></br> 
 
<div id="req2result"></div></br> 
 
<span>String:</span> 
 
<input id="req2string1" type"text"/> 
 
<span>Pattern:</span> 
 
<input id="req2string2" type="text"/> 
 
<span>Replace with:</span> 
 
<input id="req2string3" type="text"/></br> 
 
<span class="button" onclick="replaceString();">Replace</span>

+0

謝謝,Moishe。這是一個非常徹底和很好的答案。它工作完美。 – Unikkorns

+0

沒問題:)。 –

相關問題