正则表达式 - - 字符分组:[ 中括号 ] & 量词:{ 大括号 }

一、正则 简介

正则:
是用来处理(匹配)字符串的;正则是单独的一套语法体系

1.1、元字符

元字符:
在正则中有特殊语义的字符:. [] [^] ? * + {min,max} ^ $ () \1\2 | ;

1.2、转义字符:\

当匹配的字符中有特殊语义的字符时,需要用到转义字符(\)。

二、字符分组 : [ ]

用 [ ] 表示分组,在固定范围内匹配 一个 字符;注意字符组的顺序(根据ASCII表);[^] 范围取反。

test() 方法: 是一个正则表达式方法,用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false

 简写:

  • \d 表示 [0-9] ;\D 表示 [^0-9]
  • \w 表示 [0-9A-Za-z] ; \W 表示 [^0-9A-Za-z]
  • \s 表示 [\f\n\r\t] 等空白符 ; \S 表示 取反

// /[123456789]/ : 匹配模式,
// 在范围 1 2 3 4 5 6 7 8 9 字符中,是否存在 '9'
console.log(/[123456789]/.test('9'));   //true
// 当然,1 至 9 的9个字符范围还可以这样表示:[1-9]
console.log(/[1-9]/.test('9'));    //true
// 简写
console.log(/\d/.test('9'));   //true

//注意字符组的顺序
console.log(/[9-1]/.test('9'));   //报错

三、量词 { }:匹配多个字符,修饰个数

情景需要:
 匹配一个字符,我们可以用字符组来匹配,比如 /[1-9]/.test(‘9’) 匹配一个数字字符;那如果我要匹配 3 个数字呢?

唉,办法是有的:


console.log(/[1-9][1-9][1-9]/.test('953'));   //true

那匹配 100 个呢?(狗头···),我们可以用量词管它是几个葫芦娃。

形如 /\d{100}/ 表示 匹配 100个数字字符

当量词出现范围的时候:{min,max} : 出现至少min 次,最多 max 次(max为空表示不限,无限次)

3.1、量词范围格式

({} 内不要有空格,为了好看下面罗列的格式里有空格)

  • { n } 表示 匹配 n 次
  • { n ,m} 表示 匹配至少 n ,最多 m 次
  • { n ,} 表示 至少 n , 最多不限次

简写:

  • /\d+/ 加号 表示:至少一次;{1,}
  • /\d?/ 问号 表示:0 或者1次;{0,1}
  • /\d*/ 星号 表示:不限次数; {0,}

3.2、默认的匹配模式:贪婪模式

 当我们量词设为 {2,5}的时候:可以发现,它会尽量多的去匹配字符,是因为它默认的匹配模式是贪婪模式。

贪婪模式:能多就多,意味着我们给一个匹配次数的范围,它会匹配到最大值次数


console.log(/\d{2,5}/.exec('953'));   
console.log(/\d{2,5}/.exec('95345678'));  


//打印结果:

[ '953', index: 0, input: '953', groups: undefined ]
[ '95345', index: 0, input: '95345678', groups: undefined ]

3.3、非贪婪模式:能少就少

  • 注意啊,这里不是取反 ^ 操作啊,非贪婪模式指的是范围内的最小的次数。

正确操作:量词后面 追加


console.log(/\d{2,5}?/.exec('953'));   
console.log(/\d{2,5}?/.exec('95345678'));    

四、总结

 学习到这里,使用正则表达式匹配简单的字符串,就差不多了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值