目标是替换数字 0-9 以及表单中文本输入的变量值,如果在用户键入时使用 JavaScript 找到匹配项,则使用替代值 x。
为什么这不起作用?
regexExpression = "([0-9]"+ companyvalue + ")";
每种情况在独立编码时都有效,但在串联时不起作用。
var regexExpression = ("[0-9]");
按预期工作并用 x 替换数值。
var regexExpression = "("companyvalue")";
按预期工作并用 x 替换变量文本输入值。
function clean(e) {
var companyvalue = document.getElementById("company").value;
var textfield = document.getElementById(e);
var regexExpression = ('([0-9]' + companyvalue + ')');
var regex = new RegExp(regexExpression,"g","i");
if(textfield.value.search(regex) > -1) {
document.getElementById('status').innerHTML = "Telephone numbers and company name<br>are automatically redacted.";
}
textfield.value = textfield.value.replace(regex, "x");
//alert (companyvalue);
}
<input id="company" style="border-color:#F8980F;" class="medium required" type="text" name="company" />
<textarea id="description" onkeyup="clean('description')" onkeydown="clean('description')" class="medium" cols="25" rows="8" name="description" placeholder="Write a short summary." /></textarea>
<div id="status"></div>
最佳答案
查看 RegExp 上的文档以获得深入的解释。
但基本上,您可以使用文字符号创建正则表达式:
/([0-9])/
或者使用 RegExp
构造函数:
new RegExp('([0-9])');
鉴于您想要动态构建模式,您需要使用构造函数:
var re = new RegExp('([0-9]' + companyvalue + ')');
关于javascript - 为什么这个 javascript RegExp 连接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46557549/