美文网首页饥人谷技术博客
正则表达式小案例

正则表达式小案例

作者: 饥人谷_Jack | 来源:发表于2017-10-10 00:42 被阅读0次

1. \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分别是什么?

表达式 解释
/\d/ 代表匹配所有数字
\w 代表匹配所有数字和字母[a-zA-Z0-9]和下划线
\s 代表匹配空白符
[a-zA-Z0-9] 代表匹配所有大写和小写字母和0-9的所有数字
\b 代表单词边界
. 代表除了回车符和换行符之外的所有字符
* 代表出现零次或多次(任意次)
+ 代表出现一次或多次(至少出现一次)
代表出现0次或一次(最多一次)
x{3} 代表连续出现3次x
^ 放在元字符[^xx]里面代表取反,作为边界匹配字符\^xx\代表以xx开头
**$ 代表以**结尾

2. 写一个函数trim(str),去除字符串两边的空白字符

function trim(str) {
  var reg = /^\s+|\s+$/g;
  return str.replace(reg, '');
}
var a = trim(' hello,world ');
console.log(a)

3. 写一个函数isEmail(str),判断用户输入的是不是邮箱

function isEmail(str) {
  var reg = /\w+[@]\w{1,6}[.com]/g;
  return reg.test(str);
}
var a = isEmail('2348gd@gmail.com');
console.log(a);

4. 写一个函数isPhoneNum(str),判断用户输入的是不是手机号

function isPhoneNum(str) {
  var reg = /^[1]\d{10}$/g;
  return reg.test(str);
}
var a = isPhoneNum('12222222222');
console.log(a);

5. 写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)

function isValidUsername(str) {
  var reg = /^\w{6,20}$/g;
  return reg.test(str);
}
var a = isValidUsername('12_32212_32212_32212');
console.log(a);

6. 写一个函数isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划线,且至少至少包括两种)

function isValidPassword(str) {
  var reg = /^\w{6,20}$/;
  if (reg.test(str)) {
    if (/^[a-z]+$/.test(str) || /^[A-Z]+$/.test(str) || /^[0-9]+$/.test(str) || /^[_]+$/.test(str)) {
      return '至少有两种'
    } else {
      return '设置成功'
    }
  } else {
    return "不能少于6个字符或大于20个字符"
  }
  return reg.test(str);
}
var a = isValidPassword('22222');
console.log(a);

7. 写一个正则表达式,得到如下字符串里所有的颜色

var re = /#[0-9a-fA-F]{6}/g
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee ";
console.log( subj.match(re) )  // ['#121212', '#AA00ef']

8. 下面代码输出什么? 为什么? 改写代码,让其输出[""hunger"", ""world""].

var str = 'hello  "hunger" , hello "world"';
var pat =  /".*"/g;
console.log(str.match(pat));//"hunger" , hello "world",由于贪婪模式,会尽可能多的匹配;

相关文章

网友评论

    本文标题:正则表达式小案例

    本文链接:https://www.haomeiwen.com/subject/gkhuyxtx.html