JavaScript-StepPitGuide
  • 封面
  • 前言
  • 基础知识
    • 基础知识
      • 变量声明
      • 变量类型和计算
      • 作用域
      • 基本数据类型
        • Undefined
        • Null
        • Boolean
        • Number
        • String
        • Symbol
      • 类型转换
    • 引用类型
      • Object类型
      • Array类型
        • 检测数组
        • 转换方法
        • 栈方法
        • 队列方法
        • 重排序方法
        • 操作方法
        • 位置方法
        • 迭代方法
        • 归并方法
      • Date类型
      • RexExp类型
      • Function类型
      • Set类型(ES6)
      • Map类型(ES6)
    • BOM
      • window对象
      • location对象
      • navigator对象
      • screen对象
      • history对象
    • DOM
      • DOM节点操作
      • DOM结构操作
    • 事件
      • 事件流
      • 事件注册与触发
      • 事件对象
      • 事件分类
    • 异步
      • Ajax
      • Promise
    • 正则表达式
    • 面向对象程序设计
      • 构造函数
      • 原型链
      • 继承
      • New
      • Object.create
    • 函数表达式与函数式编程
      • 递归
      • 闭包
      • this
      • 箭头函数
      • 高阶函数
      • 由函数构建函数
      • 纯度、不变性和更改政策
      • 基于流的编程
      • 无类编程
      • 函数基本应用
    • 语法规则
      • ESlint
  • 进阶知识
    • 算法应用
      • 基本排序算法
        • 冒泡排序
        • 选择排序
        • 插入排序
        • 希尔排序
        • 归并排序
        • 快速排序
    • 模块化
      • AMD
      • CommonJS
      • ES6模块化
    • 应用
      • Socket.io库
      • async+await异步调用
      • axios
    • 设计模式
    • 性能优化
    • 工具
      • 时间操作
    • 异常监控
    • 安全🔐
      • XSS
      • CSRF
    • 跨域
      • 跨域
      • 跨域方法
        • Hash
        • JSONP
        • CORS
        • XDomainRequest
由 GitBook 提供支持
在本页
  • 1.生成一个正则表达式regexObj
  • 2.regexObj.test(str)
  • 锚点
  • 字符类
  • 元字符
  • 量词

这有帮助吗?

  1. 基础知识

正则表达式

上一页Promise下一页面向对象程序设计

最后更新于4年前

这有帮助吗?

1.生成一个正则表达式regexObj

  • 描述字符串规则的表达式,两种方式

    • 直接量: /pattren/attrs(/规则/属性)

    • 对象构造方式:new RegExp(pattern,arrtes) (/规则/属性)

2.regexObj.test(str)

  • 测试正则表达式regexObj与指定字符串是否匹配

/10086/.test('10086') //true
/10086/.test('12314') //false
/10086/.test('x10086s') //true //true
  • 由此看到.test()匹配了正则表达式,但是最后一条出来了一个问题。如果这种情况下/10086/.test('x10086s')正则表达式匹配到该字符串中确实含有此正则表达式

  • 所以必须要有一些限制,以下就是限制方法

锚点

  • 我们可以通过一个锚点匹配一个位置

    • ^:起始位置

    • $ :结尾位置

    • \b :单词边界

//起始位置
/^http:/.test('http://www.kejiganhuo.com') // true 以http:为起始的字符串可以匹配
/^http:/.test('attp://www.kejiganhuo.com') // false
/^http:/.test('https://www.kejiganhuo.com') //false
//结尾位置
/\.jpg$/.test('1.jpg') // true 以.jsp结尾的字符串可以匹配
/\.jsp$/.test('1.jpg ls') // false
//单词边界
/\bis\b/.test('this is tyrmars') // true 这里is才是正则所匹配的,匹配的就是is,就是看有没有is字符串
/\bis\b/.test('this') // false this是无法匹配单词边界为is
/is\b/.test('this tyrmars') // true 这样就可以匹配,因为单词左边界没有限制

example1

/^10086$/.test('10086') //true
  • 这种方法只能检测固定的号码,但是我们想检测同类的手机号码,所以就需要用到如下 字符类

字符类

  • 匹配一类字符中的一个,采用[],相当于限定字符集

    • [abc]:a或b或c

    • [0-9]:一个数字

    • [^0-9]:非数字的一个字符

    • [a-z]:一个字母

    • .:任意一个字符(除还行外)

/[0-9]/.test(123) // true
/[^1-9]/.test(0123) // false
/[12345]/.test(0) // false
/[abc]/.test('abcdefgh') //true
/[abc]/.test('fgh') //false

example2

/^1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$/.test(12345678901) //true
  • [0-9]可以被优化,所以学习到了元字符,元字符是具有特殊意义的字符

元字符

  • 具有特殊意义的字符

    • ^、$、\b

    • \d:[0-9]

    • \D:[^\d]

    • \s:空白符

    • \S:[^\s]

    • \w:[A-Z]

    • \W:[^\w]

example3

/^1\d\d\d\d\d\d\d\d\d\d\d$/.test(12345678901) //true
  • 不过呢,想一下这些\d都是重复的,所以需要用到量词

量词

  • 出现的次数

    • {m,n}:m到n次

    • *:{0,} 出现0或n次

    • ?:{0,1} 出现0或者1次

    • +:{1,} 出现1或n次

正则练习