目录

1 正则表达式

1.1 什么是正则表达式

1.2 语法

1.3 元字符

1.3.1 定义

1.3.2 参考文档

1.3.3 边界符

1.3.4 量词

1.3.5 字符类

1.4 修饰符

1.4.1 替换 replace

1.4.2 g&i

2 综合案例

案例1 用户名验证案例

案例2  昵称案例


1 正则表达式

1.1 什么是正则表达式

正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象

通常用来查找、替换那些符合正则表达式的文本,许多语言都支持正则表达式。

◇ 正则表达式在 JavaScript中的使用场景

  • 例如验证表单:用户名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文(匹配)

    • 比如用户名: /^[a-z0-9_-]{3,16}$/
  • 过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等 。

1.2 语法

1. 定义正则表达式语法:

①简单定义法:

如:

②构造定义法:

2.判断是否有符合规则的字符串:

        test() 方法 用来查看正则表达式与指定的字符串是否匹配

如:        (返回布尔值)

  • 如果正则表达式与指定的字符串匹配 ,返回true,否则false
  • 该法只能检测一个目标字符
  • 注意:js区分大小写

3.检索(查找)符合规则的字符串:

exec() 方法 在一个指定字符串中执行一个搜索匹配

如:        (如果匹配成功,exec() 方法返回一个数组,否则返回null)

1.3 元字符

1.3.1 定义

①普通字符: 大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字。 也就是说普通字符只能够匹配字符串中与它们相同的字符。

        元字符(特殊字符): 是一些具有特殊含义的字符,可以极大提高了灵活性和强大的匹配功能。

  • 比如,规定用户只能输入英文26个英文字母,普通字符的话 abcdefghijklm…..
  • 但是换成元字符写法:[a-z]

②为了方便记忆和学习,我们对众多的元字符进行了分类:

  • 边界符(表示位置,开头和结尾,必须用什么开头,用什么结尾)
  • 量词 (表示重复次数)
  • 字符类 (比如 \d 表示 0~9)

1.3.2 参考文档

  • MDN:

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressionshttps://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions

  • 正则测试工具:http:// http://tool.oschina.net/regexhttp:// http://tool.oschina.net/regex

1.3.3 边界符

 正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符

注意:如果 ^ 和 $ 在一起,表示必须是精确匹配。(只能出现写出的模式)

        // 读法:以a开头,以c结尾,中间只能是b(即该字符串只能是abc,精确匹配abc)const reg = /^abc$/console.log(reg.test('ABC'))    //falseconsole.log(reg.test('abc'))    //trueconsole.log(reg.test('abfc'))    //falseconsole.log(reg.test('abcdefadc'))    //falseconst reg = /^a$/console.log(reg.test('A'))    //falseconsole.log(reg.test('aaa'))    //trueconsole.log(reg.test('abc'))    //false

1.3.4 量词

量词用来 设定某个模式出现的次数

位置: 写在所要设定的模式后

注意: 逗号左右两侧千万不要出现空格

        // * 几次都行const reg=/^a*$/console.log(reg.test(''))  //t  console.log(reg.test('a'))  //tconsole.log(reg.test('aaa'))  //tconsole.log(reg.test('aba'))  //f
        // + 一次以上const reg = /^a+$/console.log(reg.test(''))  //f  console.log(reg.test('a'))  //tconsole.log(reg.test('aaa'))  //t
        // ? 最多一次const reg = /^a+$/console.log(reg.test(''))  //t  console.log(reg.test('a'))  //tconsole.log(reg.test('aaa'))  //f
        // {n} 只能n次const reg = /^a{2}$/console.log(reg.test(''))  //f  console.log(reg.test('a'))  //fconsole.log(reg.test('aa'))  //tconsole.log(reg.test('aaa'))  //f
        // {n,} n次以上const reg = /^a{2,}$/console.log(reg.test(''))  //f  console.log(reg.test('a'))  //fconsole.log(reg.test('aa'))  //tconsole.log(reg.test('aaa'))  //t
        // {n,m} n次以上const reg = /^a{2,3}$/console.log(reg.test(''))  //f  console.log(reg.test('a'))  //fconsole.log(reg.test('aa'))  //tconsole.log(reg.test('aaa'))  //tconsole.log(reg.test('aaaa'))  //f

练习

        const reg = /^a?b*c+d{3}$/console.log(reg.test('abcd'))       //fconsole.log(reg.test('aabcddd'))    //fconsole.log(reg.test('abcddd'))     //tconsole.log(reg.test('cddd'))       //tconsole.log(reg.test('cccddd'))     //tconsole.log(reg.test('cccfddd'))     //f

1.3.5 字符类

一、[ ]

1、 [ ] 匹配字符集合

 后面的字符串只要包含 abc 中任意一个字符,都返回 true 。

        const reg = /[abc]/console.log(reg.test('andy'))   //tconsole.log(reg.test('baby'))   //tconsole.log(reg.test('cry'))   //tconsole.log(reg.test('die'))   //f
        const reg = /^[abc]$/console.log(reg.test('andy'))   //fconsole.log(reg.test('baby'))   //fconsole.log(reg.test('cry'))   //fconsole.log(reg.test('die'))   //fconsole.log(reg.test('anda'))   //fconsole.log(reg.test('babb'))   //f console.log(reg.test('crc'))   //fconsole.log(reg.test('did'))   //fconsole.log(reg.test('a'))   //tconsole.log(reg.test('b'))   //tconsole.log(reg.test('c'))   //t

2、[ ] 里面加上 - 连字符

使用连字符 - 表示一个范围

比如:

  • [a-z] 表示 a 到 z 26个英文字母都可以
  • [a-zA-Z] 表示大小写都可以
  • [0-9] 表示 0~9 的数字都可以

注意:

[ ]内写多个范围连写即可,不要用空格隔开,如:

        const reg=/^[0-9a-zA-Z_-]$/

3、 [ ] 里面加上 ^ 取反符号

比如:  [^a-z] 匹配除了小写字母以外的字符

注意:要写到中括号里面

二 . 匹配除换行符(\n或\r)之外的任何单个字符

        const reg = /./console.log(reg.test('c'))   //tconsole.log(reg.test('\n'))   //f

补充:转义符

        //  \为转义符 \n\r 回车   \t tab 在控制台使用console.log('好好学习,\n day day \t up')console.log(`\``)   //反引号中不能包含反引号,要包含的话得试用转义符

  • 注意:如将特殊字符如 \ . | (或) 写入[ ],会被转义为普通字符

            const reg = /[.]/console.log(reg.test('c'))   //fconsole.log(reg.test('.'))   //t

如需要匹配任意单字符,则

        const reg = /.|\n/console.log(reg.test('c'))   //tconsole.log(reg.test('\n'))   //t

三、预定义:指的是 某些常见模式的简写方式。

如:

1.4 修饰符

1.4.1 替换 replace

1.4.2 g&i

 修饰符约束正则执行的某些细节行为,如是否区分大小写、是否支持多行匹配等

语法:

 i 是单词 ignore 的缩写,正则匹配时字母不区分大小写

 g 是单词 global 的缩写,匹配所有满足正则表达式的结果

        console.log('abcdabcd1234ABCD'.replace(/abcd/, '-'))   // -abcd1234ABCDconsole.log('abcdabcd1234ABCD'.replace(/abcd/g, '-'))   // --1234ABCDconsole.log('abcdabcd1234ABCD'.replace(/abcd/i, '-'))   // -abcd1234ABCDconsole.log('abcdabcd1234ABCD'.replace(/abcd/ig, '-'))  // --1234-

2 综合案例

案例1 用户名验证案例

需求:用户名要求用户英文字母,数字,下划线或者短横线组成,并且用户名长度为 6~16位

分析:

①:首先准备好这种正则表达式模式 /^[a-zA-Z0-9-_]{6,16}$/

②:当表单失去焦点就开始验证.

③:如果符合正则规范, 则让后面的span标签添加 right 类.

④:如果不符合正则规范, 则让后面的span标签添加 wrong 类.

        .right {color: green;}.wrong {color: red}
        // 获取元素:const inp = document.querySelector('input')// 2 失去焦点即判断inp.addEventListener('blur', function () {const reg = /^[a-zA-Z0-9_-]{6,16}$/if (reg.test(inp.value)) {inp.nextElementSibling.innerHTML = '输入正确'inp.nextElementSibling.className='right'} else {inp.nextElementSibling.innerHTML = '输入错误'// className为类名覆盖inp.nextElementSibling.className='wrong'}})

案例2  昵称案例

需求:要求用户只能输入中文

分析:

①:首先准备好这种正则表达式模式 /^[\u4e00-\u9fa5]{2,8}$/

②:当表单失去焦点就开始验证.

        // 获取元素:const inp = document.querySelector('input')// 2 失去焦点即判断// blur可以用,但每focus一次都会触发,没必要; 用change比较好,有所改变才会触发inp.addEventListener('change', function () {const reg = /^[\u4e00-\u9fa5]{2,8}$/if (reg.test(inp.value)) {inp.nextElementSibling.innerHTML = `<img src="./images/right.png" alt="">`} else {inp.nextElementSibling.innerHTML = `<img src="./images/error.png" alt="">`}})

Web APIs day6 | 正则阶段案例相关推荐

  1. JavaScript基础和Web APIs两个阶段的关联性(1)

  2. JavaScript(五)—— Web APIs 简介/JavaScript 必须掌握的 DOM 操作 (丰富案例 + 思维导图)

    本篇为 JavaScript 系列笔记第五篇,将陆续更新后续内容.参考:黑马程序员JavaScript核心教程,前端基础教程 系列笔记: JavaScript(一)-- 初识JavaScript / ...

  3. Web APIs 正则表达式综合案例丨小兔仙儿登录页面

    目录 综合案例:小兔鲜登录页面 案例代码:CSS丨common 案例代码:CSS丨index 案例代码:CSS丨login 案例代码:CSS丨register 案例代码:HTML丨index 案例代码 ...

  4. Web APIs,BOM树,声明dom对象,年会抽奖案例,随机图片,表单,用户注册倒计时,innerHTNL,classList的使用

    介绍 严格意义上讲,我们在 JavaScript 阶段学习的知识绝大部分属于 ECMAScript 的知识体系,ECMAScript 简称 ES 它提供了一套语言标准规范,如变量.数据类型.表达式.语 ...

  5. Web APIs /APIs --DOM简述/DOM中获取元素方法/事件(含鼠标事件)/操作(含案例)

    Web APIs Web APIs 和 JS 的关联性: Web APIs是 W3C 组织的标准,主要学习DOM 和 BOM Web APIs是 JS 所独有的部分 主要学习页面交互功能 Web AP ...

  6. 【JavaScript】Web APIs基础

    文档对象模型 (DOM) 将 web 页面与到脚本或编程语言连接起来.通常是指 JavaScript,但将 HTML.SVG 或 XML 文档建模为对象并不是 JavaScript 语言的一部分.DO ...

  7. 小白JavaScript学习笔记----web APIs

    目录 web API 操作DOM BOM,比如控制网页元素交互等各种网页交互效果 一.web APIs第一天(DOM-获取元素) 1.1变量声明 1.2Web API 基本认知 1.2.1作用和分类 ...

  8. JavaScript核心Web APIs

    目录 一.Web APIs简介 1 Web APIs和JS基础的关联性 2 MDN详细API 网址 二.DOM 1 什么是DOM 1.1 DOM树 2 获取页面元素 2.1 根据ID获取 2.2 根据 ...

  9. js Web APIs

    js Web APIs DOM 获取元素 获取页面元素的方法:1.根据ID获取 ​ 2.根据标签名获取 ​ 3.通过HTML5新增的方法获取 ​ 4.特殊元素获取 根据ID获取 使用getElemen ...

最新文章

  1. springboot 学习笔记(三)
  2. 华为实施微服务架构的五大军规
  3. mysql连接数设置操作(Too many connections)及设置md5值的加密密码
  4. Windows Server 2012 服务器之Web服务器
  5. 11G数据库导入10G的操作实践
  6. 算术类型转换、整型提升
  7. OpenCV android 开发
  8. 网络请求的null值处理
  9. jmeter面试题及答案(jmeter接口自动化测试面试题)
  10. 拥有16年开发经验,我都使用了什么工具?[最近更新:2017-10-12]
  11. 威纶触摸屏如何组态设置离散量报警及报警历史记录?
  12. 《松本行弘的程序世界》读书笔记
  13. 通往财富自由之路20160808--付费就是捡便宜
  14. AR涂涂乐⭐八、(add)优化原代码“7”、正方形识别图改为矩形识别图、增加BGM和App 图标
  15. OpenStack 虚拟机冷/热迁移的实现原理与代码分析
  16. 基于Python和Selenium的大麦网自动抢票脚本
  17. JAVA SE之面向对象12:集合3(Set)
  18. 2 大数据电商数仓项目——项目需求及架构设计
  19. Android好用的第三方组件 持续更新
  20. 冥想心理训练有效缓解长期压力:来自头发中皮质醇浓度的检测

热门文章

  1. 教你炒股票25:每日解盘
  2. 解决lightdm启动时黑屏的问题
  3. mongoDB存视频和mysql存视频_数据库存储方式:MySQL存储、MONGODB存储、Redis存储、json存储、视频存储、图片存储...
  4. VMware虚拟机下载安装教程
  5. 线性代数-MIT 18.06-5(b)
  6. 上位机使用C++通过ADS协议与倍福PLC通信例程-布尔变量的读取
  7. 仿钉钉后台流程设计图
  8. pg_repack安装及使用
  9. win10更新时强制关机会如何
  10. python程序猿_python程序员指南 pdf下载