JS

正则表达式

Regular expression

Posted by Lv Hui on May 19, 2014

正则表达式

一个用来描述或者匹配一系列符合某个语法的字符串的语言,多用在文字替换,数据验证,内容检索,过滤内容等方面

创建正则表达式

  • 构造函数的形式创建

reg = new RegExp("正则表达式","模式修正符");

1
2
3
var reg = new RegExp('google');
var result = reg.test("www.google.com");
alert(result);
  • 字面量方式创建
1
2
3
4
//两侧“/”称为定界符
var reg = /google/;
var result = reg.test("www.google.com");
alert(result);

匹配的方法

  • test方法

正则对象.test(str),匹配成功返回true,失败返回false

  • exec方法

正则对象.exec(str),匹配成功返回一个数组,失败返回false,返回数组中的input属性是被匹配的字符串,index属性是子串的位置

原子

  • 原子是正则表达式中的最小元素,包括英文,标点符号等
  • \d 匹配任意一个数字[0-9]
  • \D 与除数字外的任何一个字符匹配[^0-9]
  • \w 与任意一个英文字母,数字或下划线匹配[a-z0-9A-Z]
  • \W 除了字母,数字或下划线外的任意一个字符匹配[^a-z0-9A-Z]
  • \s 与任意一个空白字符匹配[\n\f\r\t\v]
  • \S 与除了空白符外的任意一个字符匹配[^\n\f\r\t\v]

元字符

正则表达式中有些字符有特殊意义叫元字符

  • . 匹配除换行符外的任意一个字符
  • | 或的意思,匹配其中一项就代表匹配

原子表

  • [] 匹配其中的任意一个原子
  • [^] 只匹配除其中以外的任意一个字符
  • [0-9] 匹配0-9任意一个数字
  • [a-z] 匹配小写a-z任意一个字母
  • [A-Z] 匹配大写A-Z任意一个字母

量词

可以使一些元字符字符,重复表示一些原子或元字符

    • 重复0或更多次
    • 重复1或更多次
  • ? 重复零次或一次
  • {n} 重复n次
  • {n,} 重复n次或更多次
  • {n,m} 重复n到m次

贪婪与吝啬

正则匹配默认是贪婪的,会返回最长的结果,禁止贪婪在量词后加?

*? +? ?? {n,}? {n,m}?

匹配边界符

  • ^ 匹配字符串的开始
  • $ 匹配字符串的结束,忽略换行符

模式修正符

  • 不区分大小写字母
  • 将字符串视为多行,修饰^或$
  • 全局匹配,找到所有匹配项

字符串中用到正则的函数

  • replace函数
1
str.replace(正则表达式,替换的新内容);
  • split函数,将字符串切割成数组
1
str.split(正则表达式);