正则表达式是运用于验证一种表达式,他在 js 中是一个对象,被称为正则对象,对应的正则对象存在对应相关的元字符。我只需要了解相关元字符及对应的可以书写一些简单的正则进行验证就可以了。
var regx = new RegExp('abc', 'g')
console.log(regx);// /abc/g
var regx = /abc/g
console.log(regx);// /abc/g
当没有匹配到对应的元素时,返回一个 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
- \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
- [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表示非数字 字母 下滑线
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表示非空白字符
console.log(/\s/.test(" ")) //true
console.log(/\S/.test(" ")) //false
console.log(/\S/.test("a")) //true
// +表示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)" 的模式。
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']
//属性
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('.'))