阅读 393

正则表达式详解--正则表达式原来如此简单

这是我参与新手入门的第1篇文章

前言

在日常工作中,无论是从事前端开发还是后端开发都或多或少的会接触到正则表达式,使用正则表达式可以很好到解决我们在开发中遇到的问题,提升我们的工作效率

前端正则表达式的三大用途

  1. 解析url获取其中的参数
  2. 表单的校验
  3. 敏感词过滤

正则中的基本方法

1.test()

  • 返回的结果是一个boolean值
  • 如果是true的话,代表这个字符串符合规则
  • 如果是false的话,表示这个字符串不符合规则
var reg = /a/
var str = "abc"
console.log(reg.test(str))
复制代码

2.exec()

  • 判断目标字符串是否含有符合规则的字符
  • 如果有的话返回的是一个数组,数组中包含有符合规则的字符,有下标,以及目标字符串
  • 如果没有的话返回的是null
var reg = /a/
var str = "abc"
console.log(reg.exec(str))
复制代码

字符类

  • 也就是[],[]占一位,空[]表示可匹配任意字符
  • 如果[]中写了字符,[abc]表达的意思是,这个位置上是a、b或者c都符合规则(注:匹配小写字母可写成[a-z])
  • 上箭头如果写在字符类中表示非,如果写在字符类外边表示开始,$表示结束
  • [a-zA-Z0-9]表示这一位是大小写字母或者数字

基本字符

标题标题
[...]方括号中的任意字符
[^...]除了方括号中的任意其它字符
.除换行符和其它Unicode终止符之外的任意字符
\w任何ASCII字符组成的单词,等价于[a-zA-Z0-0],还包含下划线
\W任何不适ASCII字符组成的单词,等价于[^a-zA-Z0-9_]
\s任何Unicode空白符
\S任何非Unicode空白符的字符,注意\w和\s的不同
\d任何ASCII数字,等价于[0-9]
\D除了ASCII数字之外的任何字符,等价于[^0-9]

量词

  • {m} 表示重复m次
  • {n,m} 表示最少出现n次,最多出现m次
  • {n,} 表示最少出现n次
  • "+" 等价于{1,}
  • "*" 等价于{0,}
  • "?" 等价于{0,1}

分组

用(),相当于把括号中的分为一个组,分组之后还可从分组中取到匹配的内容

RegExp.&1 $后面跟的数字表示第几个分组

解析url,通过正则获取name

要想取分组,在取之前必须运行正则,e:reg.test(str)

如果想要在正则中写变量,要用对象的形式来声明正则表达式

var reg = new RegExp(name+"=([^&]*)")
reg.test(str)
//这样就拿到了name后面的值,name为变量,这就是从url中获取值的正则
复制代码

过滤文字内容

var reg = /弟/g
var str = "我是大哥你是弟,你好弟弟"
str.replace(reg,"*")
//如果要匹配弟和哥两个字可用候选,即reg = /弟|哥/,|表示候选,和[弟哥]效果一样
复制代码

注:g表示全局,i表示不区分大小写,直接写在最后即可

注:默认情况下正则是按贪婪模式进行的,/\d{2,6}/,此正則匹配的是六个数字,如果想用惰性模式,就在正则表达式的量词后面加上?,即/\d{2,6}?/

看到这里聪明的你肯定已经学会了正则,祝贺你!!!

文章分类
前端