day14-正则表达式

概述

正则表达式是运用于验证一种表达式,他在 js 中是一个对象,被称为正则对象,对应的正则对象存在对应相关的元字符。我只需要了解相关元字符及对应的可以书写一些简单的正则进行验证就可以了。

正则对象的声明

  • 使用 new 关键词声明:第一个参数填写正则表达式,第二个参数填写修饰符(匹配模式)
  • 使用 \\ 来修饰
var regx = new RegExp('abc', 'g')
console.log(regx);//  /abc/g
 var regx = /abc/g
console.log(regx);//  /abc/g

正则的匹配模式

  • g 全局匹配
  • i 不区分大小写
  • m 换行
  • s 单个匹配

正则的元字符:

当没有匹配到对应的元素时,返回一个 null;当匹配成功后返回的是一个对象

  •  $ 以...结尾

 var regx = /2$/
 console.log('mdj'.match(regx)); //  null
  • ^ 以...开头 

// ^ 开头
var regx1 = /^a/ //表示以a开头
//字符串支持正则的四个方法 match 匹配 search 查找 split 分割 replace 替换
console.log('abc'.match(regx1));  //['a']
  • [ ] 表示匹配中括号内的其中一个元素

// [] 表示其中任意一个元素
var regx3 = /^[abc]$/ //以abc其中一个开头及结尾 只能匹配a 或 b 或 c
console.log('abc'.match(regx3));  // null
console.log('a'.match(regx3));  // ['a']
var regx3 = /^[abc][12]$/  
//以abc中任意一个开头及以12中任意一个结尾 只能匹配 a1 a2 b1 b2 c1 c2
console.log('a12'.match(regx3));  // null
var regx3 = /^abc[abc]$/  //以abc开头以abc其中一个结尾 abca abcb abcc
  • {} 表示匹配的个数

  • {n} 表示n个
  • {n,m} 表示n个到m个
  • {n,} 表示n个到无穷个 至少要有n个
//{} 表示个数
// {1,2} 1个到2个
var regx4 = /^[abc]{1,2}$/   //匹配abc中组成的1个或者俩个组合
//可以匹配 a b c aa ab ac bb bc ba ca cc cb
console.log('abc'.match(regx4));  //null
console.log('a'.match(regx4));   //['a']
console.log('ab'.match(regx4));   //['ab']
//{1,} 一个及以上 至少要1个
var regx4 = /a{1,}/  //匹配一个a 或者是多个a
console.log('a'.match(regx4));   //['a']
console.log('aaa'.match(regx4));   //['aaa']
//{2} 表示俩个
var regx4 = /^b{2}$/ //表示俩个b
console.log('b'.match(regx4)); //null
console.log('bb'.match(regx4)); //['bb']
  •  () 表示分组

//() 表示分组
var reg = /(ab){2}/ // 只能匹配 abab
console.log(reg.test('abaa'))  //false
  • 数字的表示方式:匹配成功或失败返回的都是boolean值(true、false)

  • \d 表示数字 \D表示非数字
  • [0-9] 表示数字
//\d表示数字 [0-9]
console.log(/\d/.test('1a'))   //true
console.log(/[0-9]/.test('1a'))  //true
//\D表示非数字 
console.log(/\D/.test('123'))   //false
  • 字母表示方式:返回值也是boolean类型

  • [A-Z] 大写字母
  • [a-z] 小写字母
  • [A-z] 大写字母和小写字母,根据 Ascii 码,A-z 除了字母的大小写外,中间还有一些符号
//表示字母 [A-Z]大写字母 [a-z] 小写字母 [A-z] 大写字母和小写字母
console.log(/[A-Z]/.test('abc')) //false
console.log(/[A-z]/.test('abc')) //true
console.log(/[a-z]/.test('abc')) //true
  •  \w 表示数字字母下滑线 \W 非数字字母下滑线:返回值也是boolean值

// \w表示数字 字母及下滑线 \W表示非数字 字母 下滑线
console.log(/\w/.test('_')) //true
console.log(/\w/.test('1')) //true
console.log(/\w/.test('a')) //true
console.log(/\w/.test('-')) //false
console.log(/\W/.test('-')) //true
console.log(/\W/.test('_')) //false
  •  \s 表示空白字符 \S非空白字符:返回值也是boolean值

//\s表示空白字符 \S表示非空白字符
console.log(/\s/.test(" ")) //true
console.log(/\S/.test(" ")) //false
console.log(/\S/.test("a")) //true
  • +  表示1个到多个 相当于 {1,}  :返回值也是boolean值

  • ? 表示0个到1个相当于 {0,1}  :返回值也是boolean值

  • *   表示0个到多个 相当于 {0,}  :返回值也是boolean值

// +表示0到多个 ?表示0个到一个 *表示0个到多个
console.log(/^([\d\w]*)+$/.test('19w8101397198347')) //true
console.log(/^([\d\w]*)+$/.test('?_+1'))//false
console.log(/^([\d\w]*)+$/.test(''))//true
  •  | 或者符号

x | y  :匹配 x 或 y。

例如,'z | food' 能匹配 "z" 或 "food"。'(z | f) ood' 则匹配 "zood" 或 "food"。

//| 或者 | 或符号建议和分组一起使用
console.log(/^([a]{2})|([b]{3})$/.test('aa'))   //true
console.log(/^([a]{2})|([b]{3})$/.test('bbb'))   //true
console.log(/^([a]{2})|([b]{3})$/.test('abb'))   //false
  • . 表示任意字符

  • 匹配除换行符(\n、\r)之外的任何单个字符
  • 要匹配包括 '\n' 在内的任何字符,请使用像 "(.|\n)" 的模式。

正则对象的方法及属性

方法

  • test 验证是否匹配  :返回布尔值
  • exec 返回匹配的数组
var regexp = new RegExp('a', 'g')
//正则对象的方法 boolean
console.log(regexp.test('hello'))  //false
console.log(regexp.test('apple'))  //true
//exec 执行 返回的是一个数组 类于match
console.log(regexp.exec('ooA'))   //null
console.log(regexp.exec('apple'))  // ['a']

属性

  • dotAll  是否到匹配修饰符 s
  • flags  匹配修饰符
  • global   是否全局查找
  • ignoreCase   是否不区分大小写
  • lastIndex   下一次匹配的开始索引
//属性
console.log(regexp.dotAll)  // false   是否到匹配修饰符s
console.log(regexp.flags)  //  g  匹配修饰符
console.log(regexp.global) //  true  是否全局查找
console.log(regexp.ignoreCase) //  false  是否不区分大小写
console.log(regexp.lastIndex)  //  1  下一次匹配的开始索引

正则的转义

转义的概念就是将我们的元字符变为普通字符串

  • 使用 [ ] 进行转义只能对应的普通的元字符 ( ? * . + 等 ),无法转义带反斜杠开头的元字符
  • 使用 \ 转义字符可以对任意进行转义
//转义 第一种方式将对应的非修饰的字母 不带反斜杠开头的元字符 使用[]把他包起来
console.log(/[?]/.test('?'))
console.log(/[.]/.test('.'))//true
console.log(/[.]/.test('a'))//false
console.log(/[\d]/.test('\d')) //false
console.log(/[\w]/.test('\w')) //false
//第二种使用转义字符 \
console.log(/\[\]/.test('[]'))
console.log(/\./.test('.'))

 

你可能感兴趣的:(正则表达式,javascript)