老师这个modifier不太懂?

老师这个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

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕久久 2020-07-07 09:51:43

同学你好,modifier 需要清空,具体如下:

由于“modifier”是全局变量,它会保存上一次计算的值。假如第一次“勾选”的是“忽略大小写”,那么modifier的值就是“i”,然后再勾选“全局匹配 ”,此时在userModifier的点击事件中,会对所有的“userModifier”进行遍历,然后拼接userModifier的value值,所以第二次勾选“全局匹配 ”时,会在modifier=i的基础上,再次拼接“i”和“g”,则modifier就是iig,所以需要将modifier清空:

http://img1.sycdn.imooc.com//climg/5f03d52809dd4cb011520381.jpg

如果我的回答帮到了你,欢迎采纳,祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师