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

标签 javascript

目标是替换数字 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 + ')');

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

关于javascript - 为什么这个 javascript RegExp 连接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46557549/

相关文章:

javascript - Js - 理解时间和冲突属性

php - 使用 jQuery AJAX 通过 FormData 上传文件

javascript - 如何使用 jquery 删除现有表单并添加 onsubmit

javascript - .html() 未注册 ASCII 符号

javascript - 特定 div 的 jQuery 父级

javascript - ExtJS 中的内存泄漏

javascript - Event.target 仅适用于第一个 child

javascript - 重新加载后 Ajax 删除元素

javascript - 完全控制nodejs中使用ajax发送的文件

使用 Regex 的 Javascript 字符串验证