script - 正则表达式

81 阅读2分钟

什么是正则表达式?

正则表达式,又名 '规则表达式' , 是由我们书写规则,然后用来检测 字符串 是否符合规则使用的我们使用一些特殊的字符或者符号定义一个 "规则公式", 然后用我们定义好的 "规则公式" 去检测字符串是不是符合规则

创建正则表达式

  1. 字面量创建 var reg = /正则表达式/
  2. 构造函数创建 var reg = new RegExp('正则表达式')
正则的常用方法:
  1. 匹配: 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
  1. 捕获:

正则元字符

普通元字符

\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
特殊元字符
  1. () 含义: 看作一个整体
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
  1. | 含义: 或者 [这里或的分界线为 小括号 或者是 正则的边界]
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
  1. [] 含义: 包含其中任意一个
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
// 主要作用在捕获的时候体现