正则表达式

用来处理字符串的规则
1.只能处理字符串
2.它是一个规则:可以验证字符串是否符合某个规则(test),也可以把字符串中符合规则的内容捕获到(exec/match)

let str = 'good good study, day day up!'
let reg = /\d+/; // 是否包含数字

console.log(reg.test(str)); // false

str = '2019-08-12'
console.log(reg.exec(str)); //把字符串中符合规则的捕获出来
// ['2019', index:0, groups: undefined, input:'原始字符串', length:1]

编写正则表达式
创建方式有两种
//=》字面量创建方式(两个斜杠包起来的,都是用来描述规则的元字符)
let reg1 = /\d+/

//=> 构造函数模式创建, 两个参数: 元字符字符串,修饰符字符串
let reg2 = new RegExp(‘\d+’)

// 正则表达式由两部分组成
// 1. 元字符 —》用来定义规则
// 2. 修饰符

// 1.常用的元字符
// 量词元字符: 设置出现的次数
// * 零到多次
// + 一到多次
// ?零次或者一次
// {n} 出现n次
// {n,} 出现n到多次
// {n, m} 出现n到m次

// 2.特殊元字符: 单个或者组合在一起代表特殊的含义
// \ 转义字符(普通–》特殊 特殊–》普通)
// . 除\n(换行符)以外的任意字符
// ^ 以哪一个元字符作为开始
// $ 以哪一个元字符作为结束
// \n 换行符
// \d 0-9之间的一个数字
// \D 非0-9之间的一个数字
// \w 数字、字母、下划线中的任意一个字符
// \s 一个空白字符(包含空格,制表符,换页符等)
// \t 一个制表符(一个tab键:4个空格)
// \b 匹配一个单词的边界
// x|y x或者y中的一个字符
// 【xyz】x或者y或者z中的一个字符
// 【^xy】除了x或者y以外的任意字符
// 【a-z】指定a-z这个范围中的任意字符【a-z0-9A-Z_】=== \w
// [^a-z] 上一个的取反‘非’
// ()正则中的分组符号
// (?:)只匹配不捕获
// (?=) 正向预查
// (?!) 负向预查

//3. 普通元字符 代表本身含义
// /zhufeng/ 正则匹配的就是“zhufeng”

// 正则表达式常用的修饰符: img
// i => ignoreCase 忽略单词大小写匹配
// m => multiline 可以进行多行匹配
// g => global 全局匹配

// /A/.test(‘lala’) =>false
// /A/i.test(‘lala’) => true

let reg = /^\d/  // 匹配以数字开头的字符串
console.log(reg.test('zhufeng')); // false 
console.log(reg.test('2019zhufeng')); // true
console.log(reg.test('zhufeng2019'));  // false

let reg = /\d$/ //  匹配以数字结束的字符串
console.log(reg.test('zhufeng')); // false 
console.log(reg.test('2019zhufeng')); // false
console.log(reg.test('zhufeng2019'));  // true
// ^ $ 都不加, 字符串中包含符合规则的字符即可
let reg = /\d+/; 

let reg2 = /^\d+$/;  //只能是和规则一致的内容

// 验证手机号码 (11位, 以1开头)
let reg3 = /^1\d{10}$/
console.log(reg3.test(12345678901));
// \  转义字符 注意:.不是小数点,是除\n以为的任意字符
let reg4 = /^2.3$/
console.log(reg4.test('2.3')); // true
console.log(reg4.test('2@3')); // true
console.log(reg4.test('23'));   // false

let reg5 = /^2\.3$/
console.log(reg5.test('2.3')); // true
console.log(reg5.test('2@3')); // false
let str = '\\d' // 将特殊字符当作普通字符串去匹配
let reg = /^\\d$/ // 把特殊字符转换为普通字符
console.log(reg.test(str));
// x|y
let reg = /^(18|19)$/; // 分组的第一个作用,改变处理的优先级
console.log(reg.test('18')); // true
console.log(reg.test('19'));  // true
console.log(reg.test('189'));  // false
console.log(reg.test('119')); // false
console.log(reg.test('81'));// false
console.log(reg.test('819'));// false
console.log(reg.test('1819'));// false
console.log(reg.test('1189'));// false
// [] 中括号中出现的字符一般都代表本身的含义
// let reg = /^[@+]+$/
// console.log(reg.test('@@')); // true
// console.log(reg.test('@+')); // true
// console.log(reg.test('@'));  // true
// console.log(reg.test('+'));  // true

// let reg = /^[\d]$/
// console.log(reg.test(9));  // true
// console.log(reg.test('\d'));  // false
// console.log(reg.test('d')); // false

// let reg = /^[\\d]$/
// console.log(reg.test(9));  // false
// console.log(reg.test('\d'));  // true
// console.log(reg.test('d')); // true
// console.log(reg.test('\\')) // true

// 中括号中不存在多位数
// let reg = /^[18]$/
// console.log(reg.test('1')); // true
// console.log(reg.test('8'));  // true
// console.log(reg.test('18'));  //false

let reg = /^[10-29]$/ // => 1或者0-2或者9
console.log(reg.test('1')); // true
console.log(reg.test('9'));  // true
console.log(reg.test('0'));  //true
console.log(reg.test('2'));  //true
console.log(reg.test('10'));  //false
console.log(reg.test('29'));  //false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值