正则表达式
2017-08-03 本文已影响0人
南山码农
题目1: \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分别是什么?
\d // [0-9] 表示数字0-9
\w //[a-zA-Z0-9_]表示字母,数字或下划线
\s //[\t\n\xOB\f\r]表示空白符
[a-zA-Z0-9] //表示字母,数字,下划线
\b //单词边界
. //[^\r\n]表示除了回车和换行符之外所有字符
* //表示前面内容出现任意次
+ //表示前面内容出现一次或多次
x{3} //表示x重复3次
^ //表示以后面内容开头(在中括号里面表示取反)
$ //表示以前面内容结尾
题目2: 写一个函数trim(str),去除字符串两边的空白字符
<script type="text/javascript">
function trim(str){
var reg = /^\s+|\s+$/g;
return str.replace(reg,'');
}
var str=" hello your pig "
console.log(trim(str)); //hello your pig
题目3: 写一个函数isEmail(str),判断用户输入的是不是邮箱
function isEmail(str){
var reg = /^[a-zA-Z0-9_-]+@[a-zA-Z-]+(.[a-zA-Z0-9_-])+$/g
if(!reg.test(str)){
console.log("您输入的邮箱不正确!");
return false;
}else {
return true;
}
}
var str="86hs%^^dis-fhsdkgh@qq.com&&$^^"
isEmail(str) //"您输入的邮箱不正确!"false
题目4: 写一个函数isPhoneNum(str),判断用户输入的是不是手机号
function isPhonenumber(str){
return /^1[3|4|5|8][0-9]\d{4,8}$/g.test(str)
}
var str = "12345678901";
isPhonenumber(str); //false
题目5: 写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
function isValueUsername(str){
return /\w{6,20}/g.test(str);
}
var str = "hello world";
isValueUsername(str);//false
题目6: 写一个函数isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划线,且至少至少包括两种)
function isValuePassword(str){
var reg = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$/g
return reg.test(str);
}
var str = "888888888"
isValuePassword(str); //false
function isValuePassword(str){
if (!/^\w{6,20}$/.test(str)) {return false;}
if (/^[A-Z]{6,20}$/.test(str)) {return false;}
if (/^[a-z]{6,20}$/.test(str)) {return false;}
if (/^[0-9]{6,20}$/.test(str)) {return false;}
return true;
}
var str = "888888888"
isValuePassword(str); //false
题目7: 写一个正则表达式,得到如下字符串里所有的颜色
var reg = /#([0-9A-Fa-f]{6}|[0-9A-Fa-f]{3})/
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
console.log( subj.match(reg) ) // ['#121212', '#AA00ef']
题目8: 下面代码输出什么? 为什么? 改写代码,让其输出[""hunger"", ""world""].
var str = 'hello "hunger" , hello "world"';
var pat = /"[a-z]*"/g;//\w
str.match(pat);