聊聊让人头疼的正则表达式

正则表达式简介

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

正则表达式的作用

  1. 给定的字符串是否符合正则表达式的过滤逻辑(匹配)。
  2. 可以通过正则表达式,从字符串中获取我们想要的特定部分(提取)。
  3. 强大的字符串替换能力(替换)。

正则表达式的特点

  1. 灵活性、逻辑性和功能性非穿强。
  2. 可以迅速地用极简单的方式达到字符串的复杂控制。

正则表达式语法

在线测试正则

正则表达式的组成

  • 普通字符 abc 中国 123 等
  • 特殊字符(元字符、限定符、中括号):正则表达式中有特殊意义的字符。

元字符

元字符就是在正则表达式中具有特殊含义的字符。

元字符说明
\d匹配数字
\D匹配非数字
\w匹配字母或数字或下划线_
\W匹配非字母、数字、下划线_
\s匹配空白符(空格)
\S匹配非空白符
.匹配任意除了换行符(回车键)之外的单个字符

限定符

限定符就是控制字符出现的次数,对字符个数限制

限定符说明
n*匹配任何包含零个或者多个n的字符串。n{0,}
n+匹配任何包含至少一个n的字符串。n{1,}
n?匹配任何包含零个或一个n的字符串。{0,1}
n{x}匹配包含x个n的序列的字符串。
n{x,}匹配包含至少x个n的序列的字符串。
n{x,y}匹配包含至少x个至多y个n的序列的字符串。
n$匹配任何结尾为n的字符串。
^n匹配任何开头为n的字符串。
注意:
  1. 正则表达式使用时,会对字符串整体校验,完全符合才能够匹配。否则不匹配。
  2. 针对花括号中次数限制,在去匹配字符串时,首先是从前先后匹配,先按照至多次数匹配,若至多不符合要求,则再按照较少的匹配。
  3. 针对花括号中次数限制至少是0时,此时若字符串中没有匹配的项是符合要求的,若字符串中的字符不匹配也是符合要求的。

中括号

一个中括号就代表一个字符串,中括号的目的解视控制一个字符的范围。

中括号说明
[abc]查找一个括号之间的任何字符。
[^abc]查找一个任何不在方括号之间的字符,^在中括号中有取反的意思。
[0-9]查找一个任何从0至9的数字。
[a-z]查找一个任何从小写a到小写z的字符。
[A-Z]查找一个任何从大写A到大写Z的字符。
[A-z]查找一个字母(包含大小写和下划线)。
[[\u4e00-\u9fa5]]查找一个汉字。

在匹配时,从前向后按照【规则】去找,若是全局匹配,前面若有满足项时,后面再匹配时,从满足项下一个开始匹配。

或模式

特殊符号:正则1|正则2, 或者。 符合或两边其中一个就可以匹配。

如:google,baidu,bing; // 匹配三种其中一种字符串

正则:google|baidu|bing

分组模式

特殊符号: (正则) ;

组指的是一个小集体,分组就是将一个大集体可以分成几个小集体。

如:控制你的名字连续出现的次数,最少1次,最多3次

正则:^(bruce){1,3}$

修饰符

  • g,全称global,有 全局 的意思,表示全局匹配。 如: var reg = /hello/g;
  • i,全称ignore,有 忽视、忽略 的意思,表示匹配字母时,可以忽略字母的大小写。 如: var reg = /hello/i;
  • gi,全局匹配和忽略大小写一起使用。 如: var reg = /hello/gi;

正则转义符

在正则中表示特殊符号。去除.的特殊意义,需要转义: \.

js中使用正则表达式

正则表达式对象

  • 创建正则表达式对象
/**
方式1: 语法: var 变量 = new RegExp("规则","修饰符")
*/
var reg = new RegExp('\\d','g')
/**
方式2: 语法:var 变量 = /正则表达式/ (推荐使用)
*/
var reg = /\d/g;
复制代码
  • 检测匹配:正则对象test(字符串) ; 用于检测字符串是否匹配某个规则。返回true和false

字符串对象方法相关正则使用

  • 字符串.match(正则对象); 获取匹配正则的子字符串,返回一个数组。
  • 字符串.replace(正则对象,替换后的内容); 替换所匹配正则的子字符串。返回替换后的字符串。

点赞支持、手留余香、与有荣焉,感谢各位大佬能留下您的足迹。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值