javascript - 在 JavaScript 中简单替换为用户输入

标签 javascript html regex forms replace

我正在尝试创建一个“查找和替换”函数,该函数从 Form 获取两个值(替换和替换)元素,然后替换 DIV 内所有出现的“replaced”。之后,我希望它显示一个带有替换字数统计的警报。 试图通过 for 到达那里循环,但出了点问题。使用纯 JS,我对于 jQuery 来说太新手了。

function wordReplace()
{
    var replaced = document.getElementById('replaced').value.toLowerCase;
    var replacement = document.getElementById('replacement').value;
    var workArea = document.getElementById('main').innerHTML;
    for (var r=0; r<workArea.lenght; r++)
    {
        if (workArea[r].value.toLowerCase == 'replaced')
        {
            workArea[r].value.replace('\breplaced', 'replacement')
            alert(workArea[r].value.replace('replaced', 'replacement').length)
        }
    }
}

这是我的表单代码,以防万一:(忽略 <input type="submit" onclick="replacerHide();"/> - 它用于不同的功能,目前可以使用)

<form> 
   <label for="replaced" class="labelInline">Słowo szukane</label>
   <input type="text" name="replaced" id="replaced"/>
   <label for="replacement" class="labelInline">Zamiennik</label>
   <input type="text" name="replacement" id="replacement"/>             
   <input type="submit" onclick="replacerHide();"/>         
</form>      

我在这里读到(在我的一个类似问题中)我应该熟悉 regex我做到了。但不知道如何应用它来解决我的问题。我很确定我正在做一些事情 for在这里循环,但除此之外我是空的:/

我们将非常感谢所有和任何帮助。

编辑 - 更正的完整工作代码

function wordReplace()
    {
        var div = document.getElementById('main');
        var find = document.getElementById('replaced').value;
        var replace = document.getElementById('replacement').value;

        var re_Find = new RegExp(find, 'gi');
        var matches = div.innerHTML.match(new RegExp(find, 'gi'));

        if (matches) 
            {
                div.innerHTML = div.innerHTML.replace(re_Find, replace);
            }

            matches = matches ? matches.length : 0;
            alert(matches);
     }

以及Form

<div id="form">
        <form id="formularz"> 
            <label for="replaced" class="labelInline">Słowo szukane</label>
            <input type="text" name="replaced" id="replaced"/>
            <label for="replacement" class="labelInline">Zamiennik</label>
            <input type="text" name="replacement" id="replacement"/>                
            <button onclick="replacerHide(); wordReplace();">Podmień!</button>  
        </form>

现在它可以正常工作了:)

最佳答案

尝试一些正则表达式。

function replace(find, replace, haystack) { 
    return haystack.replace(new RegExp(find,"gmi"),replace);
    }
function count(find, haystack) { 
        return haystack.match(new RegExp(find,"gmi")).length;
    }
window.alert(replace ("hello","bye","hello world? Hello person! and hello universe!"));
window.alert("Number of matches: "+count("hello","hello world? Hello person! and hello  universe!"));

关于javascript - 在 JavaScript 中简单替换为用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30509252/

相关文章:

javascript - 如何连接/组合但不使用 Closure Compressor 进行压缩?

基于 URL 路径的 Javascript/jQuery 导航

用于检测用户是否更改选项卡的 Javascript

python - 正则表达式查找文本的所有句子?

regex - 正则表达式捕获第 n 个匹配项

python - 使用正则表达式检查整个字符串

javascript - 合并/最小化多个 javascript document.body.innerHTML.replace

javascript - 如何检查结果是否为 __NSCFNumber?

javascript - 通过表单在 Flask 上发布数据会出现 400 Bad Request

css - 如何获得网络视频透明度?