js正则表达式速查

正则表达式

若是你想记住js正则表达式,来收藏一下说不定会多看几遍呢,感谢您的支持呀javascript

字面量语法

字符 匹配
字母或数字 自身
\0 表示空字符,null,等价\u0000
\t 表示制表符 \u0009
\n 表示换行符 \u000A
\v 表示垂直制表符
\f 表示换页符
\r 表示回车符
\xnn 有十六进制数表示escape字符数
\uxxxx 十六进制的Unicode
\xxx 八进制字符

以上正则表达式为基本的字面量语法,汉字的范围:/^[\u4e00 - \u9fa5]+$/java

修饰符

字符 匹配
g 全局匹配
i 忽略大小写
m 多行匹配

阅读以上内容咱们正式来看看正则表达式还有哪些语法正则表达式


范围类

范围类是表示能够匹配必定范围内的字符好比**[a-z]、[0-9]**app

"2016-09-01".replace(/[0-9]/g,"A") //AAAA-AA-AA
复制代码

预约义类

正则表达式为了方便也提供了一些预约义类:this

字符 等价类 匹配
. [^\r\n] 除了回车换行
\d [0-9] 数字字符
\D [^0-9] 非数字字符
\s [\t\n\x0B\f\r] 空白符
\S [^\t\n\x0B\f\r] 非空白符
\w [a-zA-Z0-9_] 字母数字下划线
\W [^a-zA-Z0-9_] 非字母数字下划线

预约义类提供了比较经常使用的类spa

边界

字符 匹配
^ 以XXX开头
$ 以XXX结尾
\b 单词边界
\B 非单词边界

对于单词边界的解释: 1.当咱们要将字符串'this is a apple'中is替换为字母A应该怎么作呢?code

//1.首先咱们来尝试一下
'this is a apple'.replace(/is/g,'A'); //输出"thA A a apple"
//2.只有单词旁边有空格才会被替换??因而
'this is a apple'.replace(/\sis\s/g,'A'); //输出"thisAa apple"
//3.来试试单词边界
'this is a apple'.replace(/\bis\b/g,'A'); //输出"this A a apple"
//4若是咱们想改变this中的is呢?
'this is a apple'.replace(/\Bis\b/g,'A');//输出"thA is a apple"
复制代码

量词

字符 匹配
最多一次
+ 至少一次
* 任意次
{n} n次
{n,m} n到m次
{n,} 至少n次

贪婪模式与非贪婪模式

正则表达式默认是按照尽量多的匹配:regexp

'12345678'.replace(/\d{3,6}/g,'A');//A78
//若改成非贪婪模式只须要将量词后加上?
'12345678'.replace(/\d{3,6}?/g,'A')//AA78
复制代码

分组

当你要匹配一个单词匹配三次怎么用呢?ip

'hellohellohellohello'.replace(/(hello){2}/g,'A')//Ahello
复制代码

'hello'.replace(/hello|world/g,'A')
hello或者world而不是o或w
'helloorldhellworld'.replace(/hell(o|w)orld/g,'A')//AA
复制代码

反向引用

假定一个需求:YYYY-MM-DD替换为DD-MM-YYYY字符串

'2010-09-08'.replace(/(\d{4})-(\d{2})-(\d{2})/,'$3/$2/$1');
$n表示的是第几个分组
复制代码

忽略引用

在分组里面加上?:

'2010-09-08'.replace(/(?:\d{4})-(\d{2})-(\d{2})/,'$3/$2/$1');
//"$3/08/09"
$3不存才了
复制代码

前瞻与后顾

先来看看这张表

名称 正则 匹配
正向前瞻 exp(?=assert)
负向前瞻 exp(?=assert)
正向后顾 exp(?=assert) js不支持
负向向后顾 exp(?=assert) js不支持

因为js不支持因此不予介绍了 前瞻:js从文本头向尾部解析,文本尾部叫作"前" 来看以前的一个列子 'this is a apple'将is替换为A

'this is a apple'.replace(/is(?=\sa)/g,'A'); 
//输出"this A a apple"
复制代码

正则表达式属性与方法

  • 属性
  1. globle:全局匹配
  2. ignoreCase:忽略大小写
  3. mutiline:多行匹配
  4. lastIndex:当前匹配字符最后一个字符的下一个的位置
  5. soure:正则表达式文本字符串
  • 方法
  1. test他会从lastIndex开始匹配
  2. exec