什么是正则表达式?
正则表达式,又名 '规则表达式' , 是由我们书写规则,然后用来检测 字符串 是否符合规则使用的我们使用一些特殊的字符或者符号定义一个 "规则公式", 然后用我们定义好的 "规则公式" 去检测字符串是不是符合规则
创建正则表达式
- 字面量创建
var reg = /正则表达式/ - 构造函数创建
var reg = new RegExp('正则表达式')
正则的常用方法:
- 匹配:
test() 匹配字符串中是否符合正则规则,匹配返回true,不匹配返回false
var reg = /abc/ //判断是否包含abc,并且是相连的
console.log(reg.test('123')) // false
console.log(reg.test('abc123')) // true
console.log(reg.test('abcd')) // true
console.log(reg.test('a1b2c3')) // false
- 捕获:
正则元字符
普通元字符
\d 代表至少包含一位数字
var reg = /\d/
console.log(reg.test('abc')) // false
console.log(reg.test('abc123')) // true
console.log(reg.test('1abc')) // true
\D 代表至少包含一位非数字
var reg = /\D/
console.log(reg.test('abc')) // true
console.log(reg.test('123')) false
console.log(reg.test('a123')) // true
\s 表示一位空白内容
var reg = /\s/
console.log(reg.test('!@@##$%')) // false
console.log(reg.test('abc')) // false
console.log(reg.test('abc 123')) // true
console.log(reg.test(' ')) // true
\S 表示一位非空白内容
var reg = /\S/
console.log(reg.test('!@@##$%')) // true
console.log(reg.test('abc 123')) // true
console.log(reg.test(' ')) // false
\w 表示包含数字.字母.下划线
var reg = /\w/
console.log(reg.test('abc')) // true
console.log(reg.test('123')) // true
console.log(reg.test('abc_123')) // true
console.log(reg.test('!@#@$%')) // false
\W 表示一位非数字.字母.下划线
var reg = /\W/
console.log(reg.test('abc')) // false
console.log(reg.test('123')) // false
console.log(reg.test('12_')) // false
console.log(reg.test('!@##%')) // true
. 表示一位非换行内容
var reg = /./
console.log(reg.test('abc')) // true
console.log(reg.test('123')) // true
console.log(reg.test('\n')) // false \n的意思代表换行
\ 转义符
var reg = /\d\.\d/ //这里转义符把.的特殊含义去掉了,就变成了一个普通的小数点
console.log(reg.test('abc')) //false
console.log(reg.test('100')) // false
console.log(reg.test('8.8')) // true
console.log(reg.test('88.88')) // true
边界元字符
^ 代表开头 $ 代表结尾 ^和$连用,表示字符串必须是 规则里面的内容
var reg = /^\d/ // 表示只能以数字开头
console.log(reg.test('abc123')) // false
console.log(reg.test('123abc')) // true
var reg = /\d$/ // 表示只能以数字结尾
console.log(reg.test('abc123')) // true
console.log(reg.test('123abc')) // false
var reg = /^\d$/ // 表示只能是一个数字
console.log(reg.test('12')) // false
console.log(reg.test('1')) // true
限定元字符
含义: 限定了 前一个符号 出现多少次
* 表示 0-无穷次
var reg = /^\d*$/
console.log(reg.test('abc')); // false
console.log(reg.test('')); // true
console.log(reg.test(' ')) // false
console.log(reg.test('66668785')); // true
console.log(reg.test('_999')); // false
+ 表示 1-无穷次
var reg = /^\d+$/
console.log(reg.test('123')); // true
console.log(reg.test('abc123')); // false
console.log(reg.test(' ')); // false
console.log(reg.test('_999')); // false
? 表示 0-1次
var reg = /^\d?$/
console.log(reg.test('123')); // false
console.log(reg.test('abc')); // false
console.log(reg.test('1')); // true
console.log(reg.test('')); // true
{n} 表示限定 n 次
var reg = /^\d{3}$/
console.log(reg.test('66')) // false
console.log(reg.test('666')) // true
console.log(reg.test('6666')) // false
{n,} 表示限定最少 n 次
var reg = /^\d{2},$/
console.log(reg.test('9')) // false
console.log(reg.test('99')) // true
console.log(reg.test('999')) // true
{n,m} 表示限定最少n次,最多m次
var reg = /^\d{2,3}$/
console.log(reg.test('9')) // false
console.log(reg.test('99')) // true
console.log(reg.test('999')) // true
console.log(reg.test('9999')) // false
特殊元字符
() 含义: 看作一个整体
var reg = /^abc{2}$/
console.log(reg.test('abcc')) // true
var reg1 = /^(abc){2}$/
console.log(reg.test('abcabc')) // true
console.log(reg.test('abcc')) // false
| 含义: 或者 [这里或的分界线为 小括号 或者是 正则的边界]
var reg = /^abc|def$/
console.log(reg.test('abc123')); // true
console.log(reg.test('a123')); // false
console.log(reg.test('123def')); // true
console.log(reg.test('aef')); // false
var reg = /^ab(c|d)ef$/ // 限定的条件比较死,只有两种情况才可以
console.log(reg.test('abcef')) // true
console.log(reg.test('abdef')) // true
console.log(reg.test('abcdef')) // false
[] 含义: 包含其中任意一个
var reg = /^[abc]$/
console.log(reg.test('a')) // true
console.log(reg.test('b')) // true
console.log(reg.test('c')) // true
console.log(reg.test('abc')) // false
4.[^] 不包含其中任何一个
var reg = /^[^abc]$/
console.log(reg.test('a')) // false
console.log(reg.test('q')) // true
console.log(reg.test('c')) // false
console.log(reg.test('wer')) // true
5: - 到 至
var reg = /0-9/
console.log(reg.test('8')) // true
6:\数字 重复 第 n 个小括号的内容, 并且 要求和小括号的内容完全一致
var reg = /^(abc|def)&/
console.log(reg.test('abc')) // false
console.log(reg.test('def')) // false
console.log(reg.test('abcabc')) // true
console.log(reg.test('defdef')) // true
7:i 标识符,忽略字母大小写,书写在正则外面,用来描述整个正则表达式
var reg = /abc/i
console.log(reg.test('a')) // true
console.log(reg.test('A')) // true
console.log(reg.test('b')) // true
console.log(reg.test('B')) // true
console.log(reg.test('c')) // true
console.log(reg.test('C')) // true
8:g 标识符,表示全局,书写在正则外面,用来描述整个正则表达式
var reg = /ab123df456gh789/g
// 主要作用在捕获的时候体现