正则表达式基础总结

定义方式

// 定义一个正则表达式有两种方式:

let reg1 = new RegExp(/abc/);
let reg2 = /abc/;

// 但我们平时使用的方式还是第二种,就像我们初始化一个数组的时候是使用第一种而不是第二种的构造式

let ary1 = new Array(1,2,3);
let ary2 = [1,2,3];

匹配包含固定字符串

首先来一个最简单的正则,匹配包含字符串abc

let reg = /abc/;
console.log( reg.test( 'ab' ) ); // false
console.log( reg.test( 'ac' ) ); // false
console.log( reg.test( 'abc' ) ); // true
console.log( reg.test( 'abcd' ) ); // true

// 'abc'必须是连续的,'acbd'也是不可以
console.log( reg.test( 'acbd' ) ); // false

开始和结束的边界符 ^ $

匹配输入字符串的开始位置:^
匹配输入字符串的结束位置:$

let reg1 = /^abc/; // 匹配以 abc 字符串为开始的字符
let reg2 = /abc$/; // 匹配以 abc 字符串为结尾的字符

let reg = /^abc$/; // 精确匹配字符串必须是 abc
console.log(reg.test( 'abc' )); // true
console.log(reg.test( 'abcd' )); // false
console.log(reg.test( 'aabcd' )); // false
console.log(reg.test( 'abcabc' )); // false

字符类

[]:表示有一系列字符可供选择,只要匹配其中一个就可以了

let reg = /[abc]/; // 只要包含abc中的任意一个字符就可以匹配
console.log( reg.test('andy') ); // true
console.log( reg.test('baby') ); // true
console.log( reg.test('color') ); // true
console.log( reg.test('red') ); // false

[] 配合 边界符 ^ $

// 只有是 a 或者 b 或者 c 这三个字符 才返回true
let reg = /^[abc]$/;
console.log( reg.test('aa') ); // false
console.log( reg.test('a') ); // true
console.log( reg.test('b') ); // true
console.log( reg.test('c') ); // true
console.log( reg.test('abc') ); // false
console.log( reg.test('cr') ); // false

字符组合

// 26个英文字符大小写都可以,但是[]里面是“或”的关系,只能有一个字符
let reg = /^[a-zA-Z0-9_-]$/;
console.log( reg.test( 'a' ) ); // true
console.log( reg.test( 'A' ) ); // true
console.log( reg.test( '5' ) ); // true
console.log( reg.test( '_' ) ); // true
console.log( reg.test( '-' ) ); // true
console.log( reg.test( '!' ) ); // false

中括号里面字符 ^ 的用法

// 对比上面的正则,在中括号里面加入 ^ 符号,意思是:取反
let reg = /^[^a-zA-Z0-9_-]$/;
console.log( reg.test( 'a' ) ); // false
console.log( reg.test( 'A' ) ); // false
console.log( reg.test( '5' ) ); // false
console.log( reg.test( '_' ) ); // false
console.log( reg.test( '-' ) ); // false
console.log( reg.test( '!' ) ); // true

量词符

*:字符出现0、1、2、3…n次

let reg = /^a*$/; // *:0次 或者 n次
console.log( reg.test('') ); // true
console.log( reg.test('a') ); // true
console.log( reg.test('aaa') ); // true

+:字符出现1次以上

let reg = /^a+$/;
console.log( reg.test('') ); // false
console.log( reg.test('a') ); // true
console.log( reg.test('aaa') ); // true

?:字符出现1次或者0次

let reg = /^a?$/;
console.log( reg.test('') ); // true
console.log( reg.test('a') ); // true
console.log( reg.test('aaa') ); // false

大括号的使用
{3}:字符出现3次
{3,}:字符出现3次或者3次以上
{3,10}:字符出现3次到10次之间,包含3次和10次
注意{3, 10}这种写法是错误的,3和10之间不能有空格

// {3} 重复3次
let reg = /^a{3}$/; // 相当于 /^aaa$/
console.log( reg.test('') ); // false
console.log( reg.test('a') ); // false
console.log( reg.test('aaa') ); // true
console.log( reg.test('aaaa') ); // false
// {3,} 大于等于3次
let reg = /^a{3,}$/;
console.log( reg.test('') ); // false
console.log( reg.test('a') ); // false
console.log( reg.test('aaa') ); // true
console.log( reg.test('aaaa') ); // true
// {3, 16} 大于等于3次 并且 小于等于16次
let reg = /^a{3,6}$/;
console.log( reg.test('') ); // false
console.log( reg.test('a') ); // false
console.log( reg.test('aaa') ); // true
console.log( reg.test('aaaa') ); // true
console.log( reg.test('aaaaaa') ); // true
console.log( reg.test('aaaaaaa') ); // false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值