目标是使用javascript替换数字0-9以及表单中文本输入的变量值,如果找到匹配项,则替换值为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>
答案 0 :(得分:3)
查看RegExp上的文档,以获得深入的解释。
但基本上,您可以使用文字符号创建正则表达式:
/([0-9])/
或使用RegExp
构造函数:
new RegExp('([0-9])');
鉴于您想要动态构建模式,您需要使用构造函数:
var re = new RegExp('([0-9]' + companyvalue + ')');
答案 1 :(得分:0)
查看以下解决方案:
var pattern1 = '[0-9]';
var regex = new RegExp(pattern1 + companyvalue, "g");