正则表达式(JS快速上手篇)

正则表达式(RegExp)是一种字符串的匹配模式,可以按照一定规则从字符串中获取、替换指定子串,以下是JS中常用的正则方法。

一、创建方式

创建正则表达式有以下两种方式。

  1. //
let reg = /happy/;      //用于匹配子串“happy”
let result = reg.test('I am so happy today.'); // true
  1. new RegExp(//)
let reg = new RegExp(/happy/);
let result = reg.test('I am so happy today.'); // true

二、基本方法

  1. test
    test用于判断 字符串 是否包含指定 子串 ,如果包含,返回true,否则返回false。
  let str = 'I love to study, not only can it make me happy, but also can extend my knowledge.' ;let reg = /happy/;let result = reg.test(str);      // result = true
  1. replace
    replace可以快速替换字符串中的指定子串。
  let str = 'I love to study, not only can it make me happy, but also can extend my knowledge.' ;let reg = /happy/;let result = str.replace(reg, 'relaxing');     // result = I love to study, not only can it make me relaxing, but also can extend my knowledge.
  1. match
    match可以用于获取字符串中所有匹配的子串的集合。
  let str = 'I love to study, not only can it make me happy, but also can extend my knowledge.' ;let reg = /can/g;let result = str.match(reg);      // result = ['can', 'can']

三、正则速查表

  1. 限定符
    限定符可以显示限定符前面出现的字串的出现次数。
/**以下我用 贪婪匹配 和 非贪婪匹配 来实现标签的匹配。
*/
let str = '<div>你好,小青豆。</div>';
let reg = /<.+?>/g; // 非贪婪匹配
let reg1 = /<.+>/g; // 贪婪匹配
let result = str.match(reg);   // ['<div>', '</div>']
let result = str.match(reg1);  // ['<div>你好,小青豆。</div>']
规则 含义
+ 前面的字符出现的次数 >= 1。
* 前面的字符出现的次数 >= 0。
? 前面的字符出现的次数 = 0 / 1。
{ n } 前面的字符出现的次数 = n 。
{ n, } 前面的字符出现的次数 >= n。
{ n, m } 前面的字符出现的次数 >= n && <= m。

⚠️:限定符“ +”、“ * ” 都是贪婪的,它们会尽可能的匹配多的字符,可以在它们后面加上“ ? ”实现非贪婪匹配。

  1. 普通字符
规则 含义
a-z 小写字母a-z
A-Z 大写字母A-Z
\d 数字
. 任意字符
\s 空格
\w 数字和字母
  1. 定位符
    定位符 ^ 既可以表示否定,也可以表示限定开头。在字符集中使用表示否定,否则表示限定开头。
    eg:[^a] 表示除字母a之外的其他字符。(否定)
    eg: (^cat)$ 表示cat开头的字符串。(限定开头)
    总结:在中括号 [ ] 内之间使用^表示否定,其他情况都为限定开头。
规则 含义
^ 匹配输入字符串开始的位置。
$ 匹配输入字符串结束的位置。
\b 匹配单词边界处。
\B 匹配非单词边界处。
  1. 特殊字符
规则 含义
() 标记一个表达式的开始和结束。
[ 标记一个中括号表达式的开始。
| 指明两项之间的一个选择。
. 除 \n之外的任意单字符。
  1. 选择
    用圆括号可以将所有选择项括起来,相邻的选择项用“ | ”分隔。但用圆括号会有一个副作用,使相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作用。
规则 含义
?: pattern 匹配pattern,但不获取结果。industr(?: y | ies) 等于 industry |industries。
?! pattern 正向否定预查。Windows(?! 95| 98 | NT | 2000)
?= pattern 正向肯定预查。Windows(?= 95 | 98
?<= pattern 反向肯定预查,与正向反向仅方向相反。
?<! pattern 反向否定预查,与正向反向仅方向相反。

更多正则使用方式:http://www.runoob.com/regexp/regexp-tutorial.html

正则表达式(JS快速上手篇)相关推荐

  1. vs转eclipse之工具快速上手篇

    eclipse工具下载 首先说明,本篇内容适用于刚开始学java的同学,老手大牛等可以路过. 不得不说vs确实很强大,常用的都在安装包里集成了,几乎可以一键安装,直接使用,操作起来非常方便. ecli ...

  2. 【Three.js】Three.js快速上手教程

    1. Three.js简介 官网对 Three.js 的介绍非常简单:"Javascript 3D library". 即:three.js是JavaScript编写的WebGL第 ...

  3. Dva.js 快速上手指南

    先说些废话 最近在开发React技术栈的项目产品,对于数据状态的管理使用了Dva.js,作为一个资深的ow玩家,我看到这个名字第一反应就是----这不是ow里的一个女英雄吗?仔细阅读了官方文档之后,发 ...

  4. Sortable.js快速上手

    官网教程和demo Sortable.js GitHub Sortable仓库 Sortable是基于原生js的拖拽库,没有多余的依赖,使用感十分友好,Sortable.min.js 大小约44KB, ...

  5. 用户需求调研—快速上手篇

    什么是需求   需求:是指人们在某一特定的时期内在各种可能的价格下愿意并且能够购买某个具体商品的需要.----<百度百科>   基于上述理解,在我们的日常生活中,"需求" ...

  6. Chainer快速上手篇一 小众的AI框架之MNIST单机训练

    1.写在前面的话 最近一直在忙找工作.毕业大论文的事情,也没多少时间来维护博客以及自己的Github!时间如白驹过隙,自己最近也是在公司实习,公司有个日本客户需要用到Chainer这个并不常见的深度学 ...

  7. IOS版伪春菜开发笔记1.0之XCODE快速上手篇

    学习任何一门语言的方法就是实践实践再实践,自然语言如此,编程语言亦是如此.本文将以IOS版伪春菜开发学习为例,逐步使大家熟悉xcode及IOS开发的基础与技巧.由于笔者也是刚开始学习IOS开发不久,如 ...

  8. C# 小白快速上手篇~WPF画线条

    上一节的时间以及文本名称替换我相信大家都学会了,这节课我们要学的就有点难了,因为这是我最近开发中遇到的问题,很多同学在WPF开发中就会遇到这样一个问题,相信大家对线条都不陌生,但是在界面中显示出对应的 ...

  9. Android如何使用Camera2拍照【简易快速上手篇】

    因为大部分的需求,并没有那么复杂,只需要简单的拍照功能,对于这种简单的需求,本文可以很好的满足.本文,是对Camera2做一个极简易的封装,以及去掉其它不重要的API,帮助你在几分钟内,使用Camer ...

最新文章

  1. 数组去重(包括es6)
  2. wxWidgets:最小的 wxWidgets 示例
  3. Facebook:15年来最重要的转型,F8大会掀开打造私密社交网络的新篇章
  4. vsftp账号_Linux入门-CentOS7安装vsftp
  5. POJ 2386 Lake Counting DFS水水
  6. Spring Boot学习总结(8)——SpringBoot Common application properties(application.properties)详解
  7. 点餐系统的设计(一)
  8. Tricks(二十)—— 从 N 个数中等概率地产生 M 个数
  9. animate.css做点赞效果
  10. matlab imagesc 平滑,在matlab中,如何使用imagesc在2D热图中“平滑”像素
  11. “疫情当下”能做什么?PHP直播系统源码在行动
  12. 【机器人学】机器人开源项目KDL源码学习:(10)KDL中的OOP思想---继承
  13. 软件测试人员所不知道的软件测试七项原则
  14. 教育技术与c语言程序设计,2018年华东师范大学885教育技术与C程序设计考研复习资料...
  15. 【算法宇宙——在故事中学算法】背包dp之完全背包问题
  16. Matplotlib文字处理
  17. 如何用分词来简化状语从句
  18. python循环输入错误重新输入_python输入三次错误密码,用户锁定问题
  19. Nginx那些事儿2
  20. 计算机网络毕业实训报告书,计算机网络实训报告书

热门文章

  1. CAD制图问题,向程序发送命令时出现错误
  2. mysql每天创建表_Navicat for MySQL 每天自动创建数据表
  3. 磨金石教育摄影技能干货分享|花朵怎样拍才能不凌乱
  4. 一个好玩的波形声音图
  5. X86上的Android:性能与兼容可否兼得?
  6. SonyEricsson IOException 80000019
  7. 万丈高楼平地起之线程篇
  8. 1106 2019数列
  9. 计算机思维与逻辑思维的区别,逻辑(思维的规律和规则)_百度百科
  10. (附源码)SSM野生动物保护资讯管理系统JAVA计算机毕业设计项目