正则表达式

\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('[email protected]'));

写一个函数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));

司徒正美正则表达式

你可能感兴趣的:(正则表达式)