正则表达式

正则表达式就是 一个用于查找的 含有 匹配字符串 或 匹配元字符的 字符串。
正则表达式的组成: 由 元字符 或者 限定符 组成的一个式子

  • 元字符
(1) .    表示除了换行符以外的任意一个字符如  '111'  ','
(2) []   ①表示范围 ②表示把正则表达式中的元字符的意义取消掉
				[0-9]: 表示0~9之间任意一个数字  '123' '534'
				[a-zA-Z]:所有的字母中任意一个
		        [.]: 表示 一个 .
(3)  |   表示或者
	       [0-9]|[a-z]: 要么是一个数字,要么是一个小写的字母  '哈哈0嘻嘻x'
(4)  ()   用于分组,提高优先级
		   [0-9]|([a-z]):先(),在其他
		   ([0-9])([a-z]):两个组,从左往右开始计算

又是元字符,又是限定符

(1) *   表示前面的表达式出现0次或者多次
	        [a-z][0-9]* : 任意一个小写字母,后面要么0个数字要么多个数字如: 'afjlsdjflj7'
(2) +    表示前面的表达式出现了1次或者多次
          [a-z][0-9]+   任意一个小写字母, 后面至少出现一个数字 'ajljlj998808'
(3) ?   表示前面的表达式出现了0次或者1次,还可以用于阻止贪婪模式
        [3][a-z]?     3,后面出现一个字母,或者一次也不出现 '3666a' '3j' '3'
  

**限定符

(1)  {n}-----限定 前面的表达式出现了n次
           [0-9]{3}    一定会有3个数字 如: '哈哈6690嘻嘻'

(2)  {n,}----前面的表达式出现n次到多次
		 {0,}-----表示前面的表达式出现了0次 或者多次,和 * 一样
		             [a-z][0-9]{0,} : 任意一个小写字母,后面要么0个数字要么多个数字
		            '哈哈abc89999'
		 {1,}----表示前面的表达式 出现1次 或者多次 ---和 + 一样
		 {0,1}----表示前面的表达式 出现0次 或者1次----和 ? 一样

(3) {n,m}----前的表达式出现n到m次
      {3,7}----表示前面的表达式 出现3次到7次
              [0-9]{3,7}  '哈哈1234567'
              错误的写法: {,10};

(4) ^    ①以什么开始
               ^[0-9]: 以数字开头
               ^[a-z]:以字母开头
          ②取反     
               [^0-9]:表示非数字
               [^a-z]: 表示非小写字母
(5) $    以什么结束
            [0-9]$: 表示一定要以数字结尾
            ^[0-9]$: 严格模式数字开头数字结尾

简写元字符

	\d: 任意一个数字  [0-9]
	\D: 任意非数字  字母,特殊符号
	
	\s: 空白符 包括空格, tab, 回车换行等
	\S: 非空白符
		 [\s\S] 表示任意字符
		 
	\w: 非特殊符号     数字,字母,下划线 [0-9a-zA-Z_]
	\W: 特殊字符       ,。?#……

修饰符
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。

js 正则表达式对象 就是 由 正则表达式创建的对象, 该对象可以进行 匹配, 提取替换.

创建正则表达式对象

  1. 构造函数

    var regex = new RegExp( 正则表达式字符串[, 匹配模式] );
    
  2. 字面量

    var regex = /正则表达式/;
    
  • 使用正则表达式使用test()方法进行匹配

语法: 正则对象.test( 字符串 )

如果参数字符串中含有 复合 正则匹配的 子字符串, 就返回 true, 否则返回 false

  • 正则表达式可以使用 exec()match()可以将匹配到的数据提取出来

字符串.match(正则表达式)-----返回一个数组,存储匹配的值(match字符串的方法)

正则表达式对象.exec( 字符串 ) 返回值是数组
exec 首先获得第一个匹配项,再调用一次该方法, 就可以获得 第二个匹配项,一直调用下去, 就可以得到所有的匹配项,直到最后全部匹配完, 如果还用该方法, 则返回 null。

  • 字符串的替换
    语法:
    字符串.replace( 查找字符串, 替换字符串 ) -> 字符串
    注意:replace方法是字符串的方法,不是正则对象的方法

字符串1.replace( 字符串2, 字符串3 )
在 字符串1 中找到 字符串2, 将其替换成 字符串3, 返回替换后的字符串
特点: 只替换第一个找到的字符串

字符串.replace( 正则表达式, 字符串 ) -> 字符串

贪婪模式
凡是在正则表达式中, 涉及到次数限定的, 一般默认都是尽可能的多匹配.
取消贪婪模式. 取消贪婪模式: 在次数限定符(+,*,?,{})后面加上 ?
注意: 贪婪模式性能会略高于非贪婪模式, 所以开发的时候. 一般不考虑贪婪的问题
只有代码匹配结果出现问题了, 一般一次多匹配了, 才会取消贪婪。

学习链接:https://www.runoob.com/jsref/jsref-obj-regexp.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值