Javascript使用正则表达式搜索字符串

时间:2015-09-13 06:47:23

标签: javascript regex string

我正在尝试使用正则表达式完成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;
}

两者都没有工作,我无法从我使用的教程中找出原因。我错过了什么?

1 个答案:

答案 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>