正则表达式 RegExp

  • 一、正则表达式的概念
  • 二、正则表达式的组成
  • 三、正则对象 RegExp
    • 两种方式的区别
  • 四、正则对象的方法
  • 五、修饰符
  • 六、元字符
  • 七、字符类
  • 八、量词
  • 九、转义字符 \
  • 十、分组
    • 反向引用
  • 十一、或
  • 十二、断言
  • 十三、匹配模式
  • 十四、字符串中和正则相关的方法

一、正则表达式的概念

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

二、正则表达式的组成

正则表达式由元字符,字符类,和量词组成 /^([字符类]{量词})([字符类]{量词})$/

三、正则对象 RegExp

  1. 通过new 关键字声明正则对象
     //  正则规则: 可以是字符串类型,也可以是正则var patt = new RegExp(正则规则,  修饰符)var patt = new RegExp('a',  'g')var patt = new RegExp(/a/,  'g')
  1. 字面量的形式
     var patt = /正则规则/修饰符

两种方式的区别

字面量形式不能接受变量

四、正则对象的方法

  1. test() : 执行一个检索,用来查看正则表达式与指定的字符串是否匹配。返回 true 或 false。

  2. exec() : 在一个指定字符串中执行一个搜索匹配。返回一个结果数组(包含所有匹配的结果)或 null(没有匹配则为null)。如果要检索出所有匹配的结果,则需要使用循环
    该方法在执行时,通过lastIndex属性会纪录每次匹配结束的位置,下次执行则从lastIndex纪录的位置开始; 找不到匹配的结果时,lastIndex属性会重置为0, 从头开始

     var patt = /o/g;var str = 'hello world oo';var res1 = patt.exec(str) var res2 = patt.exec(str) var res3 = patt.exec(str) //  借助循环获取所有的结果let res;while(res = patt.exec(str)){console.log(res)}

五、修饰符

  • g : 全局匹配
  • i : 不区分大小写
  • m : 多行匹配

六、元字符

  • ^ : 匹配以什么作为开始
  • $ : 匹配一什么作为结束
  • () : 分组或者反向引用
  • | : 或

七、字符类

  • [xyz] : 字符类的集合, 匹配方括号中的任意字符
  • [^xyz] : 一个反向字符集。也就是说, 它匹配任何没有包含在方括号中的字符
    在字符类中可以使用-表示范围的集合
  • [0-9] : 匹配数字0 到 9
  • [a-z] : 匹配小写字母
  • [A-Z] : 匹配大写字母
  • [A-Za-z] : 匹配大小写字母
  • [A-Za-z0-9] : 匹配大小写字母以及数字
  • . : 默认匹配除换行符之外的任何单个字符。

针对常用的匹配规则,可以使用简写等价形式

  • \w : 等价形式 [A-Za-z0-9_]

  • \W : 匹配一个非单字字符。等价于 [^A-Za-z0-9_]

  • \d : 等价于 [0-9]

  • \D :匹配一个非数字字符 等价于 [^0-9]

  • \s : 匹配任意的空白符

  • \S :除了空白符以外的

八、量词

量词限定字符类出现的次数; 量词分为贪婪的和惰性的

  • * : 匹配0次或者多次 , 等价形式 {0,}
  • + : 匹配1次或者多次 , 等价形式 {1,}
  • ? : 匹配0次或者1次 , 等价形式 {0,1}
  • {n} : 匹配n次
  • {n,} : 至少匹配n次,最多不限
  • {n,m} : 最少匹配n次, 最多m次

九、转义字符 \

如果在正则表达式中匹配 需要匹配特殊的字符(正则规则中使用的字符), 需要借助于 转义字符 \特殊字符; 有时候为了避免出现不可控问题,需要使用双重转义\\字符

十、分组

() 分组和反向引用;
只分组不引用: ?:()

反向引用

反向引用 引用的是匹配的结果,而不是匹配的规则
反向引用 \n 数字n 是左括号的顺序

//  反向引用
var patt = /^<(h1)>\w{1,}<\/\1>/
var str = '<h1>hello</h1>';
var res = patt.test(str)//  只分组, 不引用
var patt = /^((?:(ECMA)Script)Hello)$/
var str = 'ECMAScriptHello';
var res = patt.test(str);
//  反向引用 $n : n 是左括号的顺序; 如果是正则对象的属性,使用 $n; 如果在正则表达式中使用,则使用 \nconsole.log(RegExp.$1);
console.log(RegExp.$2);
console.log(RegExp.$3);
console.log(RegExp.$4);

十一、或

var patt = /hello(red)|(black)/
var patt = /hello[a|b]/

十二、断言

  • x(?=y) :匹配’x’仅仅当’x’后面跟着’y’.这种叫做先行断言(正向前瞻)。
  • x(?!y) : 仅仅当’x’后面不跟着’y’时匹配’x’,这被称为正向否定查找(负向前瞻)。

十三、匹配模式

正则规则的匹配模式有两种: 贪婪模式和惰性模式

  • 贪婪模式: 尽可能多的去匹配
  var str = '123456789012345678900';var res = str.match(/\d{3,6}/g);
  • 惰性模式: 尽可能少的去匹配
    可以在贪婪模式的后边添加 ? 变成惰性模式 +? *? {n,}? {n,m}? ??
var str = '123456789012345678900';
var res = str.match(/\d{3,6}?/g);

十四、字符串中和正则相关的方法

  • replace():替换与正则表达式匹配的字符串; 默认替换的是第一次匹配的字符串; 如果要替换全部得 ,则需要全局匹配
'hello world'.replace(/o/, 'javascript')// 默认替换第一个
'hello world'.replace(/o/g, 'javascript') // 全部替换
  • match() :找到一个或者多个正则表达式匹配的结果数组,
var str = 'hella world';
// let res = str.match(/o/g);  //   如果有全局修饰符g 结果是一个数组 ['o', 'o']
let res = str.match(/o/);
console.log(res);
/* //  没有全局修饰符g的结果解析:0: "o" // 索引值 匹配的结果(数组中的内容的索引值)groups: undefined index: 4 //  匹配的字符在指定的字符串中第一次出现位置的索引值input: "hello world"  // 匹配的指定的字符length: 1 // 数组的长度*/
  • search() :匹配指定的字符串中是否含有指定的字符; 它返回匹配到的位置索引,或者在失败时返回-1。
    var str = 'hello';// var res = str.search(/e/)var res = str.search(/a/)console.log(res);
  • split() : 字符串的分割
    var str = 'haksdf2324hwehej2313jkfghwer5345634adf';var res = str.split(/\d{1,}/)console.log(res);

正则表达式 RegExp相关推荐

  1. mysql正则表达式regexp_mysql - 正则表达式 RegExp

    -- mysql 正则表达式 RegExp -- 操作符 -- ^ 匹配输入字符串的开始位置. -- $ 匹配输入字符串的结束位置. -- . 匹配除 "\n" 之外的任何单个字符 ...

  2. javascript类型系统——正则表达式RegExp类型

    原文:javascript类型系统--正则表达式RegExp类型 × 目录 [1]对象 [2]实例属性 [3]静态属性[4]实例方法 前面的话 前面已经介绍过javascript中正则表达式的基础语法 ...

  3. JS安全域名验证,安全域名效验,安全域名检查,正则表达式RegExp检查域名,截取字符串检查域名,检查域名url前缀的域名部分是否包含指定域名

    JS安全域名验证,安全域名效验,安全域名检查,正则表达式RegExp检查域名,截取字符串检查域名,检查域名url前缀的域名部分是否包含指定域名 安全域名列表 var DomainArray=['run ...

  4. php正则判断是否包特殊符号,正则表达式(RegExp)判断文本框中是否包含特殊符号...

    前言 有时,我们希望判断文本框中用户输入的字符是否含有特殊符号(*/#$@),就像用户注册时密码框的填写. demo 利用 RegExp 对象,能很优雅的实现以上需求: // even(文本框内容) ...

  5. mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法

    Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...

  6. 6/7 SELECT语句:过滤(正则表达式REGEXP)

    序号 说明 操作 1 REGEXP(正则表达式) LIKE替换成REGEXP 2 匹配任意1个字符 元字符:. 3 OR匹配 | 4 匹配几个字符之一 [a|b] 5 匹配除指定字符外的字符 [^a| ...

  7. JavaScript 正则表达式(RegExp对象、属性、方法、String支持)

    内容来源:JavaScript RegExp 对象参考手册    http://www.w3school.com.cn/js/jsref_obj_regexp.asp RegExp 对象 RegExp ...

  8. JavaScript正则表达式----RegExp类型, 代码说明简单易懂

    RegExp 正则表达式定义 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具.匹配原则: 贪婪匹配 直接量语法 /pattern(匹配规则)/attributes(属性) 创建 ...

  9. JavaScript正则表达式 RegExp验证手机号码

    直接上代码 <div class="phone"><input type="text" id="phone">< ...

最新文章

  1. 如何通过Bit-Z的场外交易购买BZ?(新手图文攻略)
  2. TripleDES类 3des加密算法实现
  3. 儿童学文字编程python_手把手教你python数字知识
  4. python中的字典和集合_Python 字典和集合
  5. EF CodeFirst类生成器
  6. ue4 4.27源码下载
  7. 一文理清Apache Spark内存管理脉络
  8. 建立PCI网卡无盘工作站自动上网(转)
  9. 记录docker修改mysql映射端口
  10. 股票模拟交易日志(七)
  11. 基于android的个人理财软件 android stu_Android聊天软件开发(基于网易云IM即时通讯)——注册账号(二)...
  12. linux 下使用isign 签名ipa包
  13. Solidworks如何为装配体绘制剖面视图
  14. 【Python】cannot import name ‘ParserError‘ from ‘dateutil.parser‘
  15. PageAdmin如何修改后台页面标题。
  16. 利用DISM修复WIN11的系统组件错误
  17. MT6737 Android N 平台 Audio系统学习----录音到播放录音流程分析
  18. mysql给定一段日期,获取日期范围内的每一天
  19. 图像处理45-grabCut图像分割
  20. Windows Server 2008 IP策略关闭135端口

热门文章

  1. 人脸识别SeetaFace2原理与代码详解
  2. android ble蓝牙接收不到数据_Android BLE蓝牙开发-读写数据 获取UUID
  3. 论文阅读-A cooperated shuffled frog-leaping algorithm for distributedenergy-efficient hybrid flow ...
  4. 计算机模拟泊松分布,第19讲 计算机模拟matlb.ppt
  5. SnnGrow快讯:微软 Win7/8.1 今日结束支持,不会再获得安全更新、AI工程化进程加速,人工智能需要怎样的数据?
  6. 在cmd控制台输出汉字时出现乱码
  7. 游戏策划全接触之游戏剧本篇-----原创
  8. 汽车几种变速器的结构特点
  9. 普通人可以做的3个靠谱副业,副业成刚需,上班不易
  10. xcode以及mac常用快捷键