JavaScript如何实现对引号包裹的文本进行打码替换
引号包裹内容打码实现方法
你不需要改动HTML和CSS代码,只需要调整JS里的匹配逻辑即可,核心是把原来的关键词匹配规则替换为双引号内容匹配规则:
- 删除原有预设关键词数组的相关逻辑
- 使用正则全局匹配所有成对双引号包裹的文本片段
- 复用已有的等长X替换逻辑,把匹配到的引号+内部内容整体替换为和内部文本等长的X即可
修改后的完整JS代码
var div = document.getElementById('formSub'); function censorWords(event) { event.preventDefault(); var textContent = document.getElementById('input'); console.log(textContent.value) textContent.value = censored(textContent.value); } function censored(string) { console.log('in') // 全局匹配所有英文双引号包裹的内容,捕获引号内的文本 // 如果需要同时支持中文双引号,把正则改成 /["“]([^"”]*)["”]/g 即可 var regexp = /"([^"]*)"/g; return string.replace(regexp, function (match, innerContent) { var censorship = ''; // X长度和引号内的文本长度保持一致 for (var i = 0; i < innerContent.length; i++) { censorship += 'X'; } return censorship }) } div.addEventListener('click', censorWords)
效果说明
输入文本:The dog is "red"
匹配到的片段为"red",引号内部内容red长度为3,替换后输出:The dog is XXX,完全符合需求。如果引号内是更长内容,比如"test string",内部长度为11,就会自动替换为11个连续的X。
内容的提问来源于stack exchange,提问作者user15769770
相关产品推荐
相关产品推荐

