老师说的那个简化,我试了一下,能实现但不知道是否标准,请老师帮忙看下
来源:3-43 利用replace方法完善正则测试工具
Elisa呀
2020-02-20 22:08:10
请老师帮忙看下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>正则表达式测试工具</title>
<style>
#regexp{
width: 650px;
margin: 100px auto;
font-size: 14px;
}
#regexp .title{
color:#777;
font-size:24px;
text-align: center;
}
#regexp .textbox{
width: 638px;
height: 150px;
border: 1px solid #ccc;
border-radius:5px;
padding:5px;
resize: none;
}
#regexp .readonly{
background-color: #eee;
}
#regexp .textfield{
width: 215px;
padding:5px;
border:1px solid #ccc;
}
</style>
</head>
<body>
<div id="regexp">
<h1 class="title">正则表达式测试工具</h1>
<textarea id="userText" class="textbox" placeholder="在此输入待匹配的文本"></textarea>
<p>
正则表达式:
<input type="text" id="userRegExp"class="textfield" placeholder="在此输入正则表达式">
<input type="checkbox" name="userModifier" value="i"/>忽略大小写
<input type="checkbox" name="userModifier" value="g"/>全局匹配
<input type="checkbox" name="userModifier" value="m"/>多行匹配
<input type="button" id="matchingBtn"value="测试匹配"/>
</p>
匹配结果:
<div id="matchingResult" class="textbox readonly"></div>
<p>
替换表达式:
<input type="text" id="userReplaceText"class="textfield" placeholder="在此输入替换表达式">
<input type="button" id="replaceBtn"value="测试替换"/>
</p>
替换结果:
<div id="replaceResult" class="textbox readonly"></div>
<!--<textarea id="matchingResult" class="textbox" disabled="disabled"></textarea>-->
</div>
<script>
var userText=document.getElementById('userText'),
userRegExp=document.getElementById('userRegExp'),
userModifier=document.getElementsByName('userModifier'),
matchingBtn=document.getElementById('matchingBtn'),
matchingResult=document.getElementById('matchingResult'),
userReplaceText=document.getElementById('userReplaceText'),
replaceBtn=document.getElementById('replaceBtn'),
replaceResult=document.getElementById('replaceResult');
var pattern;
var modifier='';
for(var i=0;i<userModifier.length;i++){
userModifier[i].onclick=function(){
modifier='';//清空重新计算,不然会累积
for(var j=0;j<userModifier.length;j++){
if(userModifier[j].checked){
modifier+=userModifier[j].value;
}
}
}
}
//点击正则匹配按钮
function check(tex,ale){
if(!tex.value){
alert(ale)
tex.focus();
return;
}
}
matchingBtn.onclick=function(){
check(userText,'请输入待匹配的文本!');
check(userRegExp,'请输入正则表达式!');
}
// matchingBtn.onclick=function(){
// if(!userText.value){
// alert('请输入待匹配的文本!');
// userText.focus();
// return;
// }
// if(!userRegExp.value){
// alert('请输入正则表达式!');
// userRegExp.focus();
// return;
// }
pattern=new RegExp('('+userRegExp.value+')',modifier);
matchingResult.innerHTML=pattern.exec(userText.value)?userText.value.replace(pattern,'<span style="background-color:yellow">$1</span>'):'(没有匹配)';
}
//点击替换按钮
replaceBtn.onclick=function(){
check(userText,'请输入待匹配的文本!');
check(userRegExp,'请输入正则表达式!');
check(userReplaceText,'请输入要替换成的文本!')
}
// replaceBtn.onclick=function(){
// if(!userText.value){
// alert('请输入待匹配的文本!');
// userText.focus();
// return;
// }
// if(!userRegExp.value){
// alert('请输入正则表达式!');
// userRegExp.focus();
// return;
// }
// if(!userReplaceText.value){
// alert('请输入要替换成的文本!');
// userRegExp.focus();
// return;
// }
pattern=new RegExp('('+userRegExp.value+')',modifier);
replaceResult.innerHTML=userText.value.replace(pattern,'<span style="color:red">'+userReplaceText.value+'</span>');
}
</script>
</body>
</html>
2回答
好帮手慕星星
2020-02-21
同学你好,代码中问题如下:
1、标点符号需要是英文状态下的
2、不需要再写一个匹配按钮的点击事件,在原来地方修改就好
参考:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>正则表达式测试工具</title>
<style>
#regexp {
width: 650px;
margin: 100px auto;
font-size: 14px;
}
#regexp .title {
color: #777;
font-size: 24px;
text-align: center;
}
#regexp .textbox {
width: 638px;
height: 150px;
border: 1px solid #ccc;
border-radius: 5px;
padding: 5px;
resize: none;
}
#regexp .readonly {
background-color: #eee;
}
#regexp .textfield {
width: 215px;
padding: 5px;
border: 1px solid #ccc;
}
</style>
</head>
<body>
<div id="regexp">
<h1 class="title">正则表达式测试工具</h1>
<textarea id="userText" class="textbox" placeholder="在此输入待匹配的文本"></textarea>
<p>
正则表达式:
<input type="text" id="userRegExp" class="textfield" placeholder="在此输入正则表达式">
<input type="checkbox" name="userModifier" value="i" />忽略大小写
<input type="checkbox" name="userModifier" value="g" />全局匹配
<input type="checkbox" name="userModifier" value="m" />多行匹配
<input type="button" id="matchingBtn" value="测试匹配" />
</p>
匹配结果:
<div id="matchingResult" class="textbox readonly"></div>
<p>
替换表达式:
<input type="text" id="userReplaceText" class="textfield" placeholder="在此输入替换表达式">
<input type="button" id="replaceBtn" value="测试替换" />
</p>
替换结果:
<div id="replaceResult" class="textbox readonly"></div>
<!--<textarea id="matchingResult" class="textbox" disabled="disabled"></textarea>-->
</div>
<script>
var userText = document.getElementById('userText'),
userRegExp = document.getElementById('userRegExp'),
userModifier = document.getElementsByName('userModifier'),
matchingBtn = document.getElementById('matchingBtn'),
matchingResult = document.getElementById('matchingResult'),
userReplaceText = document.getElementById('userReplaceText'),
replaceBtn = document.getElementById('replaceBtn'),
replaceResult = document.getElementById('replaceResult');
var pattern;
var modifier = '';
for (var i = 0; i < userModifier.length; i++) {
userModifier[i].onclick = function() {
modifier = ''; //清空重新计算,不然会累积
for (var j = 0; j < userModifier.length; j++) {
if (userModifier[j].checked) {
modifier += userModifier[j].value;
}
}
}
}
//点击正则匹配按钮
function check(tex, ale) {
console.log(tex)
if (!tex.value) {
alert(ale)
tex.focus();
return;
}
}
// matchingBtn.onclick = function() {
// }
matchingBtn.onclick = function() {
// check(userText, '请输入待匹配的文本!');
check(userText, '请输入待匹配的文本!');
// check(userRegExp, '请输入正则表达式!');
check(userRegExp, '请输入正则表达式!');
// if(!userText.value){
// alert('请输入待匹配的文本!');
// userText.focus();
// return;
// }
// if(!userRegExp.value){
// alert('请输入正则表达式!');
// userRegExp.focus();
// return;
// }
pattern = new RegExp('(' + userRegExp.value + ')', modifier);
matchingResult.innerHTML = pattern.exec(userText.value) ? userText.value.replace(pattern, '<span style="background-color:yellow">$1</span>') : '(没有匹配)';
}
//点击替换按钮
replaceBtn.onclick = function() {
// check(userText, '请输入待匹配的文本!');
check(userText, '请输入待匹配的文本!');
// check(userRegExp, '请输入正则表达式!');
check(userRegExp, '请输入正则表达式!');
check(userReplaceText, '请输入要替换成的文本!')
}
replaceBtn.onclick = function() {
// if(!userText.value){
// alert('请输入待匹配的文本!');
// userText.focus();
// return;
// }
// if(!userRegExp.value){
// alert('请输入正则表达式!');
// userRegExp.focus();
// return;
// }
// if(!userReplaceText.value){
// alert('请输入要替换成的文本!');
// userRegExp.focus();
// return;
// }
pattern = new RegExp('(' + userRegExp.value + ')', modifier);
replaceResult.innerHTML = userText.value.replace(pattern, '<span style="color:red">' + userReplaceText.value + '</span>');
}
</script>
</body>
</html>如果我的回答帮到了你,欢迎采纳,祝学习愉快~
Elisa呀
提问者
2020-02-20
不对,是我刷新错页面了,弹不出来TAT,
请问这个要怎么简化呢?还请老师帮忙看下
相似问题