JavaScript 正则表达式-使用小结

来源:互联网 发布:匈牙利算法矩阵 编辑:程序博客网 时间:2024/06/14 02:57

JavaScript 正则表达式-使用小结

  • JavaScript 正则表达式-使用小结
    • 简介
      • 语法
      • 方法
        • RegExp 对象中支持正则表达式的方法
          • test
          • exec
        • String 对象中支持正则表达式的方法
          • search
          • match
          • replace
          • split

简介

RegExp对象表示正则表达式,它是对字符串执行模式匹配的工具。

参考
菜鸟教程:JavaScript 正则表达式
W3Cschool:JavaScript 正则表达式
W3school:JavaScript 正则表达式
MDN:JavaScript 正则表达式

深入浅出的javascript的正则表达式学习教程

语法

  1. 直接量语法:/pattern/attributes
  2. 创建RegExp对象:new RegExp(pattern, attributes)

参数 pattern:字符串,指定正则表达式的模式;
参数 attributes [可选]:包含属性 g(全局匹配),i(不区分大小写匹配),m(多行匹配);
注意:一定 不要用双引号 将 RegExp 对象括起来,否则就成字符串了。

方法

RegExp 对象中支持正则表达式的方法

test()

检测字符串是否匹配某个模式。
语法:RegExpObject.test(string);

exec()

检索字符串中的正则表达式的匹配。
语法:RegExpObject.exec(string)

注意:该返回的数组的第一个元素是与正则表达式相匹配的文本,该方法还返回2个属性,index属性声明的是匹配文本的第一个字符的位置;input属性则存放的是被检索的字符串string;该方法如果不是全局的话,返回的数组与match()方法返回的数组是相同的。

String 对象中支持正则表达式的方法

search()

查找第一次匹配的位置。
语法:stringObject.search(regexp)

参数 regexp: 可以是字符串,也可以是 RegExp 对象。
注意:search() 方法不会执行全局匹配,即使带属性 g 也将忽略属性 g;同时它也没有regexp对象的lastIndex的属性,且总是从字符串开始位置进行查找,总是返回的是 stringObject 匹配的第一个位置。

match()

查找所有匹配值(匹配多个值时,以数组形式返回)。
语法:stringObject.match(regexp)

参数 regexp: 可以是字符串,也可以是 RegExp 对象。

replace()

查找和替换所有值。
语法:stringObject.replace(regexp/substr, replacement);

replacement 既可以是字符串,也可以是函数。若 replacement 带有$,是有具体含义的:

1, 2, 3 ... 99 的含义是与regexp中的第 1 到第 99 个子表达式相匹配的文本;$& 的含义是:与RegExp相匹配的子字符串;lastMatch 或 RegExp["$_"] 的含义是:返回任何正则表达式搜索过程中的最后匹配的字符;lastParen 或 RegExp["$+"] 的含义是:返回任何正则表达式查找过程中最后括号的子匹配;leftContext 或 RegExp["$`"] 的含义是:返回被查找的字符串从字符串开始的位置到最后匹配之前的位置之间的字符;rightContext 或 RegExp["$'"] 的含义是:返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符;// $1,$2 代表的是第一个和第二个子表达式相匹配的文本// 子表达式需要使用小括号括起来,代表的含义是分组var name = "longen,yunxi";var s4 = name.replace(/(\w+)\s*,\s*(\w+)/,"$2 $1");console.log(s4); // "yunxi,longen"
split()

将字符串分隔成字符串数组。
语法:stringObject.split(separator,howmany);

separator [必填项]:字符串或正则表达式,该参数指定的地方分割 stringObject;
howmany [可选]:指定返回的数组的最大长度,如果设置了该参数,返回的子字符串不会多于这个参数指定的数组。如果没有设置该参数的话,整个字符串都会被分割,不考虑他的长度;

原创粉丝点击