正则测试工具代码优化,请老师帮忙看看

来源:3-43 利用replace方法完善正则测试工具

JakePrim

2019-08-06 17:44:28

<div id="regexp">
<h1 class="title">正则表达式测试工具</h1>
<textarea id="userTags" class="textbox" placeholder="在此输入带匹配的文本"></textarea>
<p>
正则表达式:<input type="text" id="useRegExp" class="textfiled" placeholder="在此输入正则表达式" />
<input type="checkbox" name="userModifier" value="i" /> 忽略大小写
<input type="checkbox" name="userModifier" value="m" /> 多行匹配
<input type="checkbox" name="userModifier" value="g" /> 全局匹配
<input type="button" value="测试匹配" id="matchingBtn" class="matchbtn" />
</p>
<h3>匹配结果:</h3>
<div id="matchingResult" class="textbox readonly"></div>
<p>
替换文本:<input type="text" id="useReplaceText" class="textfiled" placeholder="在此输入替换文本" />
<input type="button" value="替换" id="replaceBtn" />
</p>
<h3>替换结果:</h3>
<div id="replaceResult" class="textbox readonly"></div>
</div>

<script>
var userTags = document.getElementById('userTags');
var useRegExp = document.getElementById('useRegExp');
//数组
var userModifiers = document.getElementsByName('userModifier');
var matchingBtn = document.getElementById('matchingBtn');
var matchingResult = document.getElementById('matchingResult');
var useReplaceText = document.getElementById('useReplaceText');
var replaceBtn = document.getElementById('replaceBtn');
var replaceResult = document.getElementById('replaceResult');
var pattern;
var modifier = '';

for (var i = 0; i < userModifiers.length; i++) {
userModifiers[i].onclick = function () {
//每次点击清空
modifier = '';
//每一次点击都要循环匹配
for (var j = 0; j < userModifiers.length; j++) {
if (userModifiers[j].checked) {
modifier += userModifiers[j].value;
}
}
}
}

matchingBtn.onclick = function () {
matchingResult.innerHTML = options('regexp');
}

replaceBtn.onclick = function () {
replaceResult.innerHTML = options('replace');
}

var options = (function () {
function options(name) {
if (!userTags.value) {
alert('请输入待匹配待文本');
userTags.focus();
return '';
}
if (!useRegExp.value) {
alert('请输入正则');
useRegExp.focus();
return '';
}
if (name==='replace') {
if (!useReplaceText.value) {
alert('请输入替换关键字');
useReplaceText.focus();
return '';
}
}
pattern = new RegExp('(' + useRegExp.value + ')', modifier);
return opt[name](pattern);
}
var opt = {
regexp: function (pattern) {
return pattern.exec(userTags.value) ? userTags.value.replace(pattern, '<span style="background-color:yellow;">$1</span>') : "(没有匹配)";
},
replace: function (pattern) {
var result = userTags.value.replace(pattern, '<span style="color:red;">' + useReplaceText.value + '</span>');
return result;
},
addOpt:function(name,pattern,fn){
if(!opt[name]){
opt[name] = fn;
}
return opt;
}
}
options.addOpt = opt.addOpt;
return options;
})();
</script>
</body>


写回答

1回答

好帮手慕码

2019-08-06

同学你好!

代码效果实现的是可以的。不过同学可以优化下css部分

如果帮助到了你 欢迎采纳 祝学习愉快~

0

0 学习 · 14456 问题

查看课程