Article Outline
正则表达式
<!--more-->
###1, \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分别是什么?
\d:预定义类的数字字符. \w"单词字符,字母,数字下划线. \s:空白符 [a-zA-Z0-9]: 大小写字母或者是数字的单个字符 \b:单词边界 .:任意字符 除去回车换行 *:出现任意多次 +:至少出现一次 ?:最多出现一次 x{3}: 代表着x出现3次 ^: 不在[]代表以xxx开头,在[]中代表取反 $: 代表以xxx结尾
###2, 写一个函数trim(str),去除字符串两边的空白字符
function trim(str) {
var reg = /\s*|\s*$/g; //^\s代表以空白开头,后面的*代表任意多次,同理结尾的\s*$也是以*个即任意个空白符结尾的字符串
return str.replace(reg,'');
}
console.log(trim(' hello '));
###3, 写一个函数isEmail(str),判断用户输入的是不是邮箱
function isEmail (str) {
// var reg = /^\w+@.+/;
var reg = /^\w+@\w+\.\w+$/;
return reg.test(str);
}
var testEmail = isEmail('[email protected]');
console.log(testEmail); //true
###4,写一个函数isPhoneNum(str),判断用户输入的是不是手机号
function isPhoneNum (str) {
var reg = /^1\d{10}$/;
return reg.test(str);
}
var testPhone = isPhoneNum('13812345678');
console.log(testPhone);//true
###5,写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
function isValidUsername (str) {
var reg = /^\w{6,20}$/;
return reg.test(str);
}
var testUsername = isValidUsername('hellodeejay123');
console.log(testUsername);//true
###6,写一个函数isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划线,且至少至少包括两种)
function isValidPassword (str) {
var reg = /^\w{6,20}$/;
var regNum = /^\d{6,20}$/;
var regUpper = /^[A-Z]{6,20}$/;
var regLower = /^[a-z]{6,20}$/;
var regUnderline = /^_{6,20}$/;
if (!reg.test(str)) {
return false;
}
else if (regNum.test(str)) {
return false;
}
else if (regUpper.test(str)) {
return false;
}
else if (regLower.test(str)) {
return false;
}
else if (regUnderline.test(str)) {
return false;
}
else {
return true;
}
}
var testPassword = isValidPassword('13asdASD__');
console.log(testPassword);
###7,写一个正则表达式,得到如下字符串里所有的颜色
var re = /*正则...*/
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
console.log( subj.match(re) ) // ['#121212', '#AA00ef']
function getColor (str) {
var reg = /#[\dA-Fa-f]{6}|#[\dA-Fa-f]{3}(?=;)/g;
return str.match(reg);
}
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
var color = getColor(subj);
console.log(color);
###8, 下面代码输出什么? 为什么? 改写代码,让其输出[""deejay"", ""world""].
var str = 'hello "deejay" , hello "world"';
var pat = /".*"/g;
str.match(pat);
输出结果为:[""deejay" , hello "world""]
因为默认是贪婪模式,从第一个双引号开始直接到最后一个双引号进行匹配。
改写代码只需要改为非贪婪模式即可:
var pat = /",*?"/;