我正在尝试使用正则表达式完成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 :(得分:0)
replace
接受regex
模式作为要替换的模式。 RegExp
接受修饰符作为第二个参数。所以你可以这样做:
new RegExp(yourVariable, 'g');
然后将其作为replace
调用中的模式。
此外,您可能希望从变量名称周围删除引号(将值存储在文本框中)。这样你实际上将使用它们包含的值,而不是它们的名称(如字符串)。
new RegExp(yourVariable);
而不是
new RegExp("yourVariable");
另外,假设
var str = document.getElementById("req2string1").innerHTML;
将str
设置为 inputBox 的值,您应该使用.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>