任务21 正则表达式-代码题
2016-11-17 本文已影响0人
GarenWang
1.写一个函数trim(str),去除字符串两边的空白字符
function time(str){
return str.replace(/^\s+|\s+$/g,"")
}
var str=" abc degh ilkm "
console.log(time(str))//"abc degh ilkm"
2.使用实现 addClass(el,cls)hasClass(el,cls)removeClass(el,cls),使用正则
<div id="div1" class="color border"></div>
<script type="text/javascript">
var div=document.getElementById("#div1");
function hasClass(el,cls){
var reg=new RegExp("(\\s|^)"+cls+"(\\s|$)","g")
// (\\s表示空白字符)
return reg.test(el.className)
}
function addClass(el,cls){
if(!hasClass(el,cls)){
el.className+=" "+cls
}
}
function removeClass(el,cls){
if(hasClass(el,cls)){
el.className=el.className.replace(cls,"").replace(/\s{2,}/g,"")
}
}
hasClass(div1,"color")//true
hasClass(div1,"bg-color")//false
addClass(div1,"fontsize")//undefined
div1.className//"color border fontsize"
removeClass(div1,"color")//undefined
div1.className//"border fontsize"
</script>
3.写一个函数isEmail(str),判断用户输入的是不是邮箱
function isEmail(str){
var reg=/^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/;
if (reg.test(str)) {
return str
}else{
alert("请输入正确的邮箱格式")
}
}
isEmail("aaa")//"请输入正确的邮箱格式"
isEmail("2270099149@qq.com")//"220099149@qq.com"
4.写一个函数isPhoneNum(str),判断用户输入的是不是手机号
function isPhoneNum(str){
var reg=/^1[0-9]{10}$/;
if (reg.test(str)) {
return str
}else{
alert("请输入正确的手机号")
}
}
var str="111100001111"
isPhoneNum(str)//输出:"请输入正确的手机号"
var str="13656576666"
isPhoneNum(str)//输出:"13656576666"
5.写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
function isValidUsername(str){
var reg=/^\w{6,20}$/
if (reg.test(str)) {
return str
}else{
alert("请输入正确的用户名")
}
}
6.写一个函数isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划线,且至少至少包括两种)
function isValidPassword(str){
var reg=/^\w{6,20}$/;
var reg1=/(^[a-z]+$)|(^[A-Z]+$)|(^[0-9]+$)|(^_+$)/;
if (reg.test(str)) {
if(reg1.test(str)){
alert("亲,请输入正确的密码(字母、数字、下划线,至少包含其中两种)")
}else{
alert("设置成功");
}
}else{
alert("亲,请输入正确的密码(长度6-20)")
}
}
7.写一个正则表达式,得到如下字符串里所有的颜色(#121212)
var re = /#[e-fA0-2]{6}/g;
var subj = "color: #121212; background-color:
#AA00ef; width: 12px; bad-colors: f#fddee #fd2 ";
alert( subj.match(re) ) // #121212,#AA00ef
8.下面代码输出什么? 为什么? 改写代码,让其输出hunger
, world.
var str = 'hello "hunger" , hello "world"';
var pat = /".*"/g;
str.match(pat);//[""hunger" , hello "world""]
//这是因为.匹配除换行和行结束符外的任意单个字符,
//而*在满足条件下会尽可能多的匹配,若要输出hunger,world,只要改写成非贪婪模式即可
var str = 'hello "hunger" , hello "world"';
var pat = /".*?"/g;
str.match(pat);//[""hunger"", ""world""]
9.补全如下正则表达式,输出字符串中的注释内容. (可尝试使用贪婪模式和非贪婪模式两种方法)
-
贪婪模式
str = '.. <!-- My -- comment \n test --> .. <!----> .. ' re = /<!--[\w\W]*?-->/g str.match(re) // '<!-- My -- comment \n test -->', '<!---->'
-
非贪婪模式
str = '.. <!-- My -- comment \n test --> .. <!----> .. ' re = /<!--[^<]*-->/g str.match(re) // '<!-- My -- comment \n test -->', '<!---->'
10.补全如下正则表达式
var re = /<[a-z][\w\W]*?>/g
var str = '<> <a href="/"> <input type="radio" checked> <b>'
str.match(re) // '<a href="/">', '<input type="radio" checked>', '<b>'