\d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分别是什么?
\d 表示匹配从0-9的数字
\w 表示匹配a-z_A-Z
\s 匹配空白符
[a-zA-Z0-9] 匹配a-zA-Z0-9的一个字符
\b 表示字符边界用来匹配单词 eg: /\bactive\b/ 但是\b有个缺陷 可以匹配到active-panel
. 表示匹配除了\r\n之外的所有字符
* 表示之前的字符可以出现任意次数
+ 表示之前的字符出现必须大于等于1次
? 表示之前的字符出现0次或者1次
x{3} 表示x出现3次
^ 放在[]里面时,表示取反,放外面时/^a/表示以字符a开始的字符串
$ /c$/表示以c字符结尾的字符串
写一个函数trim(str),去除字符串两边的空白字符
方法一.直接调用字符串的trim()函数
var str=' hello swh nihao jirengu ';
str=str.trim();
console.log(str);
方法二.使用正则
function trim(str){
str=str.replace(/^\s+|\s+$/g,'');
return str;
}
console.log(trim(' abc def '));
写一个函数isEmail(str),判断用户输入的是不是邮箱
function isEmail(str){
return /^\w+@.+(.com)$/.test(str);
}
console.log(isEmail('443878051@qq.com'));
写一个函数isPhoneNum(str),判断用户输入的是不是手机号
function isPhoneNum(str){
return /^(\+86)?1[3456789]\d{9}$/.test(str);
}
console.log(isPhoneNum('13750847841'));
写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
function isValidUsername(str){
return /^\w{6,20}$/.test(str);
}
console.log(isValidUsername('_13456'));
写一个函数isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划线,且至少至少包括两种)
function isValidPassword(str){
if(str.length<6 || str.length>20 || /\W/.test(str)) return false; //排除长度不符合,排除出现除了字母下划线数字的情况
var temp=0; //测试是否存在a-z,A-Z,0-9,_;存在则+1
if(/[a-z]/.test(str)) temp++;
if(/[A-Z]/.test(str)) temp++
if(/[0-9]/.test(str)) temp++
if(/_/.test(str)) temp++;
if(temp>=2) return true;
return false;
}
console.log(isValidPassword('01123d'));
写一个正则表达式,得到如下字符串里所有的颜色
var re = /#[a-fA-F0-9]{6}/g;
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee ";
console.log( subj.match(re) ); // ['#121212', '#AA00ef']
下面代码输出什么? 为什么? 改写代码,让其输出[""hunger"", ""world""].
var str = 'hello "hunger" , hello "world"';
var pat = /".*"/g;//匹配以冒号开头冒号结束,中间是不以\r\n出现任意次的字符
str.match(pat); // "hunger" , hello "world",出现这种情况的原因是正则的贪婪模式,
//贪婪模式指的是正则表达式会匹配最大符合条件的字符由于.*的存在使得"hunger" , hello "world"符合匹配的最大限制
//所以输出为"hunger" , hello "world"
要得到[""hunger"", ""world""]只需改为非贪婪模式即可
var str = 'hello "hunger" , hello "world"';
console.log(str)
var pat = /".*?"/g;
console.log(str.match(pat));
网友评论