老师这个modifier不太懂?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<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 .testfield {
width: 220px;
padding: 5px;
border: 1px solid #ccc;
}
</style>
</head>
<body>
<div id="regexp">
<h1 class="title">正则表达式测试工具</h1>
<textarea class="textbox" id="userText" cols="30" rows="10" placeholder="请输入待匹配的文本"></textarea>
<p>
正则表达式:<input type="text" id="userRegExp" class="testfield" 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>
<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');
var parttern,
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;
}
}
}
}
matchingBtn.onclick = function () {
if (!userText.value) {
alert('请输入待匹配的文本!');
userText.focus();
return;
}
if (!userRegExp.value) {
alert('请输入正则表达式!');
userRegExp.focus();
return;
}
parttern = new RegExp(userRegExp.value,modifier);
matchingResult.value = parttern.exec(userText.value) || "(没有匹配)";
}
</script>
</body>
</html>
每一次点击 为什么要先把modifier 清空?
我觉得当第一次点击区分大小写时 modifier=i
第二次点击全局时 如果不清空modifier的话 现在的 modifire=ig 为什么视频里面会说 modifire=iig
就是说我觉得不用清空
正在回答 回答被采纳积分+1
同学你好,modifier 需要清空,具体如下:
由于“modifier”是全局变量,它会保存上一次计算的值。假如第一次“勾选”的是“忽略大小写”,那么modifier的值就是“i”,然后再勾选“全局匹配 ”,此时在userModifier的点击事件中,会对所有的“userModifier”进行遍历,然后拼接userModifier的value值,所以第二次勾选“全局匹配 ”时,会在modifier=i的基础上,再次拼接“i”和“g”,则modifier就是iig,所以需要将modifier清空:
如果我的回答帮到了你,欢迎采纳,祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星