美文网首页
正则表达式练习

正则表达式练习

作者: 头大如牛 | 来源:发表于2017-12-21 22:39 被阅读0次

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

\d digit 数字字符
\w word 单词字符 (包括字母、数字、下划线)
\s space 空白符 (包括制表符、换行符、垂直制表符、换页符、回车符、空格)
[a-zA-Z0-9] 大小写字母及数字
\b border 单词边界,包括字符串开头、结尾,空白符号和中横线 - 都可以作为单词边界
. 除了换行符、回车符之外的所有字符
* 量词,代表任意次数
+ 量词,至少出现一次
? 量词,最多出现一次
x{3} 匹配 x连续出现3次 xxx
^ 边界,以某某某开头, 另外 ^ 有取反之意, 和 [ ] 组合可以创建反向类,如: [^abc] 表示不是a或者b或者c的字符
$ 边界,以某某某结尾

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

function trim(str){
  return str.replace(/^\s+|\s+$/g, '')
}
trim(' 1231ffd sdfsdf s-&*^5 ') //"1231ffd sdfsdf s-&*^5"

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

function isEmail(str){
  return /^\w\.?\w+@\w+(\.\w+)+$/.test(str)
}
 isEmail('wangpeng199451@gmail.com') //true

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

function isPhoneNum(str){
  return /^1[34578]\d{9}$/.test(str)
}
isPhoneNum(14299092309) //true

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

function isValidUsername(str){
  return /^\w{6,20}$/.test(str)
}
isValidUsername('wangpeng199451') //true

题目6: 写一个函数isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划

function isValidPassword(str){
  switch(true){
    case !/^\w{6,20}$/.test(str):
      return false 
      // return是直接结束当前函数返回 break是直接结束当前循环返回,这里函数内只有循环,可以省略 break
    case /^[a-z]{6,20}$/.test(str):
      return false
    case /^[A-Z]{6,20}$/.test(str):
      return false
    case /^\d{6,20}$/.test(str):
      return false
    case /^_{6,20}$/.test(str):
      return false
    default:
      return true
  }
}
isValidPassword('wangpeng199451') //true

题目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;
str.match(pat); // 输出 [""hunger" ,hello "world""]   

这里数组 length = 1
因为默认是贪婪模式, .除换行回车之外的任意字符,也就包括了引号,*代表任意次数,很贪婪尽可能多的匹配,一只匹配到末尾,接着匹配正则表达式里的最后的引号 ",所以又倒着匹配,刚好第一个就是 " 。

var str = 'hello "hunger" , hello "world"';
var pat = /".*?"/g; // 只需要在这里给量词 * 指定非贪婪模式即可
str.match(pat); // 输出 [""hunger"", ""world""]

相关文章

  • 正则表达式

    正则表达式练习

  • 优秀网站收藏

    php学习的最好资源--QuorafreeCodeCamp正则表达式练习+学习程序员直播平台正则表达式学习chan...

  • 正则表达式学习笔记

    正则表达式练习题点击这里 创建一个正则表达式 使用一个正则表达式字面量,其由包含在斜杠之间的模式组成,如下所示: ...

  • Python3.x-正则表达式抓取慕课网图片到本地

    今天刚学习完正则表达式中的基本语法,于是为了练习正则表达式的使用,便使用正则表达式来进行了一个小项目的编写。 实践...

  • 30天学习计划 js忍者秘籍 第7章 正则表达式

    9.19--9.23 第7章 正则表达式 正则表达式是一个拆分字符串并查询相关信息的过程。 推荐练习网站: js ...

  • Linux Day21:grep/sed/awk

    grep 基础正则表达式 下载练习文件wget http://linux.vbird.org/linux_basi...

  • 匹配次数

    import re 练习:写一个正则表达式能够匹配所有的整数字符串

  • 正则表达式学习笔记

    基本 正则表达式是使用你定义的“规则”扫描目标字符串,寻找目标字符串中与“规则”相匹配的字符串。在线练习正则表达式...

  • python正则表达式匹配合法IP

    闲着无聊,计划练习一下正则表达式,所以找了一个相对熟悉的问题--用正则表达式匹配合法的IP地址,个人觉得这个表达式...

  • 20170725正则表达式

    正则表达式30分钟入门教程 作者:deerchao 练习环境 http://regexr.com/ 常用的元字符...

网友评论

      本文标题:正则表达式练习

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