前端共享Web前端之路让前端飞

正则表达式学习笔记2

2017-05-10  本文已影响73人  打铁大师

什么是正则表达式

REGEXP对象

javascript通过内置对象RegExp支持正则表达式

有两种方法实例化RegExp对象

修饰符:

元字符:

字符 含义
\t 水平制表符
\v 垂直制表符
\n 换行符
\r 回车符
\0 空字符
\f 换页符
\cX 与X对应的控制字符(ctrl+x)

** *+?$^.|(){}[] **

字符类:

字符类取反:

范围类

预定义类

字符 含义
. 除了回车符和换行符之外的所有字符
\d 数字字符
\D 非数字字符
\s 空白符
\S 非空白符
\w 单词字符(字母,数字下划线)
\W 非单词字符
  匹配一个ab+数字+任意字符的字符串
  /ab\d./

边界

正则表达式还提供了几个常用的边界匹配字符

字符 含义
^ 以xxx开始
$ 以xxx结束
\b 单词边界
\B 非单词边界
  'This is a boy'.replace(/\Bis\b/g,'0');
  // Th0 is a boy
 
   'This is a boy'.replace(/\bis\b/g,'0');
  // This 0 a boy

 var mulStr='@123
  @456
  @789';
  mulStr.replace(/^@\d/gm,'X');
  // "X23
       X56
       X89"

量词

字符 含义
出现零次或一次(最多出现一次)
+ 出现一次或多次(至少出现一次)
* 出现零次或多次(任意次)
{n} 出现n次
{n , m} 出现n到m次
{n,} 至少出现n次

贪婪模式

尽可能多的匹配

  '12345678'.replace(/\d{3,6}/g,'X');
   //X78

非贪婪模式

分组

使用()可以达到分组的功能,使量词作用于分组

匹配字符串Byron连续出现3次的场景

  'a1b2c3d6'.replace('/([a-z]\d){3}/g,'X');
// Xd4

使用 | 可以达到或的效果

   'ByronCasper'.replace(/Byron|Carper/g,'X');
  //'XX'
   'ByronsperByrCasper'.replace(/Byr(on|Ca)rper/g,'X');
  // 'XX'

反向引用

 '2016-11-25'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$1');
  // 11/25/2016

忽略分组

不希望捕获某些分组,只需要在分组内加上?:就可以

前瞻

名称 正则 含义
正向前瞻 exp(?=assert)
负向前瞻 exp(?!assert)
正向后顾 exp(?<=assert) javascript不支持
负向后顾 exp(?<!assert) javascript不支持
  'a2*3'.replace(/\w(?=\d)/g,'X');
 // X2*3
  'a2*34vv'.replace(/\w(?!\d)/g,'X');
  // aX*3XXX

对象属性

RegExp.prototype.test(str);

RegExp.prototype.exec(str)

String.prototype.search(reg)

String.prototype.match(reg)

String.prototype.split()

String.prototype.replace()

function参数含义

function会在每次匹配替换的时候调用,有四个参数

上一篇下一篇

猜你喜欢

热点阅读