为什么这个javascript RegExp连接不起作用

时间:2017-10-04 05:24:52

标签: javascript

目标是使用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>

2 个答案:

答案 0 :(得分:3)

查看RegExp上的文档,以获得深入的解释。

但基本上,您可以使用文字符号创建正则表达式:

/([0-9])/

或使用RegExp构造函数:

new RegExp('([0-9])');

鉴于您想要动态构建模式,您需要使用构造函数:

var re = new RegExp('([0-9]' + companyvalue + ')');

修改:查看此示例:https://jsbin.com/zekovuqemi/edit?js,output

答案 1 :(得分:0)

查看以下解决方案:

var pattern1 = '[0-9]'; var regex = new RegExp(pattern1 + companyvalue, "g");