正则表达式

 

 


一、正则概念

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

官话这么说,人话就是你创建的一种字符串的规则,比如开头是字母,结尾要数字,比如邮箱必须带@和.com。创建了这样的规则,你就能用它干三件事:匹配;提取;替换。

如果这么说还不是很清楚,那我举个常见的例子,现在不管做什么都要注册,但账号密码的要求往往不太一样,你注册时写入的账号密码不对时,他会提醒你输入的不符合规范,这个你肯定经历过。那他是怎么知道你输入的不对呢,就是用的正则表达式,他创建了一种对账号密码这个字符串的规则,你每次输入完就会去和它的规则匹配,不符合就会报错,这样大概能理解了吗。

二、正则的组成

1.常用字符

普通数字,字母,中文,符号,特殊字符......

2.常用元字符

元字符

说明

\d

匹配至少有一个数字

\D

匹配至少任意一个非数字的字符

\w

匹配至少一个字母或数字或下划线

\W

匹配至少有一个不是字母,数字,下划线

\s

匹配至少任意的空白符

\S

匹配至少一个不是空白符的字符

.

匹配除换行符以外的任意单个字符

^

表示匹配行首的文本(以谁开始) ^\d

$

表示匹配行尾的文本(以谁结束)\d$

3.限定符

限定符

说明

*

重复零次或更多次\d*  /^ab*$/:表示一个字符串有一个a后面跟着零个或若干个b。("a", "ab", "abbb",……);

+

重复一次或更多次\d+     / ab+/:表示一个字符串有一个a后面跟着至少一个b或者更多;

?

重复零次或一次    /^ab?$/:表示一个字符串有一个a后面跟着零个或者一个b;

 

{n}

重复n次

{n,}

重复n次或更多次

{n,m}

重复n到m次

4. 其他字符

[] 字符串用中括号括起来,表示匹配其中的任一字符,相当于或的意思 [0-9]

[^]  匹配除中括号以内的内容

\ 转义符: \的用法 \ 主要是用法是在正则表达式中的特殊符号转换为它本身的意思

| 或者,选择两者中的一个。注意|将左右两边分为两部分,而不管左右两边有多长多乱

() 从两个直接量中选择一个,分组

eg:gr(a|e)y匹配gray和grey

[\u4e00-\u9fa5]  匹配汉字


三、正则表达式的创建

两种方法:

1.字面量创建

var reg1 = /aaa/;

这种写法里面不能传变量。

2.new RegExp

var a= "aaa"
var reg2 = new RegExp(a);

这种写法里面必须传一个变量。

四、正则匹配

 var str1 = "12345aaa12345";
  console.log(reg2.test(str1));

打印结果为true,因为在这个字符串中找到了aaa

五、正则抓取

var str2 = "1234567qwerttt345678____345,,345";
  var reg3 = /\d/g;
  console.log(str2.match(reg3));

抓取到的是个伪数组

第一种方法创建:如果想要全局,在最后加g,即/aaa/g

第二种方法创建:想要全局,(aaa,g)。 注意:这里的规则不要加//

六、正则替换

 var str3 = "6q6w33645556665t6y7u";
  //把6全换成1
  var reg4 = /6/g;
  console.log(str3.replace(reg4, 1));

打印结果为1q1w33145551115t1y7u,替换成功

七、正则的插件

如果你用vscode的话,有个插件里面有人家写好的常用的正则表达式。这个插件叫any-rule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值