内容来源:JavaScript RegExp 对象参考手册    http://www.w3school.com.cn/js/jsref_obj_regexp.asp

RegExp 对象

RegExp 对象属性

RegExp 对象方法

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

RegExp 对象

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

直接量语法: /pattern/attributes

创建 RegExp 对象的语法:new RegExp(pattern, attributes);

参数
参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

返回值
一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。

如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

抛出
SyntaxError - 如果 pattern 不是合法的正则表达式,或 attributes 含有 "g"、"i" 和 "m" 之外的字符,抛出该异常。

TypeError - 如果 pattern 是 RegExp 对象,但没有省略 attributes 参数,抛出该异常。


RegExp 对象属性

global           RegExp 对象是否具有标志 g。

ignoreCase    RegExp 对象是否具有标志 i。

lastIndex       一个整数,标示开始下一次匹配的字符位置。

multiline         RegExp 对象是否具有标志 m。

source           正则表达式的源文本。


RegExp 对象方法

compile    编译正则表达式,也可用于改变和重新编译正则表达式。

exec        检索字符串中指定的值。返回找到的值,并确定其位置。

exec() 方法的功能非常强大,它是一个通用的方法,而且使用起来也比 test() 方法以及支持正则表达式的 String 对象的方法更为复杂。

1、在循环中反复地调用 exec() 方法是唯一一种获得全局模式的完整模式匹配信息的方法。

<script type="text/javascript">var str = "Visit W3School";
var patt = new RegExp("W3School","g");
var result;while ((result = patt.exec(str)) != null)  {document.write(result);document.write("<br />");document.write(result.lastIndex);}
</script>/*
输出:W3School
14
*/

2、如果 exec() 找到了匹配的文本,则返回一个结果数组。否则,返回 null。

此数组的第 0 个元素是与正则表达式相匹配的文本,第 1 个元素是与 RegExpObject 的第 1 个子表达式(圆括号引用正则表达式的某部分)相匹配的文本(如果有的话),第 2 个元素是与 RegExpObject 的第 2 个子表达式相匹配的文本(如果有的话),以此类推。

除了数组元素和 length 属性之外,exec() 方法还返回两个属性。index 属性声明的是匹配文本的第一个字符的位置。input 属性则存放的是被检索的字符串 string。

var re = /(ds)+(j+s)/ig;
var str = "cfdsJS *(&dsjjjsYJSjs 888dsdsJS";
var resultArray = re.exec(str);
while (resultArray) {document.writeln(resultArray[0]);document.writeln("next match starts at " + re.lastIndex + "<br />");for (var i=1; i<resultArray.length; i++){document.writeln("substring of " + resultArray[i] + "<br />");}document.writeln("<br />")resultArray = re.exec(str);
}/*
输出:
dsJS next match starts at 6
substring of ds
substring of JSdsjjjs next match starts at 16
substring of ds
substring of jjjsdsdsJS next match starts at 31
substring of ds
substring of JS
*/

test         检索字符串中指定的值。如果含有指定的值返回 true ,否则返回 false。

调用 RegExp 对象 r 的 test() 方法,并为它传递字符串 s,与这个表示式是等价的:(r.exec(s) != null)。

<script type="text/javascript">
var str = "Visit W3School";
var patt1 = new RegExp("W3School");var result = patt1.test(str);document.write("Result: " + result);
</script>
/*
输出:Result: true
*/

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

search    检索与正则表达式相匹配的值。

如果没有找到任何匹配的子串,则返回 -1。

要执行忽略大小写的检索,请追加标志 i。

search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。

<script type="text/javascript">var str="Visit W3School!"
document.write(str.search(/w3school/i))</script>
/*
输出:6
*/

match    找到一个或多个正则表达式的匹配。

该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

全局模式下建议使用 RegExp.exec() 代替本方法。

replace   替换与正则表达式匹配的子串。

stringObject.replace(regexp/substr,replacement)

字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

replacement 可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。

字符                          替换文本
$1、$2、...、$99       与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
$&                             与 regexp 相匹配的子串。
$`                             位于匹配子串左侧的文本。
$'                              位于匹配子串右侧的文本。
$$                             直接量符号。

注意:ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。

// 1、执行一次全局替换,每当 "Microsoft" 被找到,它就被替换为 "W3School":
<script type="text/javascript">var str="Welcome to Microsoft! "
str=str + "We are proud to announce that Microsoft has "
str=str + "one of the largest Web Developers sites in the world."document.write(str.replace(/Microsoft/g, "W3School"))</script>
/*
输出:Welcome to W3School! We are proud to announce that W3School
has one of the largest Web Developers sites in the world.例子 3
*///2、确保匹配字符串大写字符的正确:
text = "javascript Tutorial";
text.replace(/javascript/i, "JavaScript");//3、将把 "Doe, John" 转换为 "John Doe" 的形式:
name = "Doe, John";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");//4、把所有的花引号替换为直引号:
name = '"a", "b"';
name.replace(/"([^"]*)"/g, "'$1'");//5、把字符串中所有单词的首字母都转换为大写:
name = 'aaa bbb ccc';
uw=name.replace(/\b\w+\b/g, function(word){return word.substring(0,1).toUpperCase()+word.substring(1);});

split       把字符串分割为字符串数组。

stringObject.split(separator,howmany)

howmany:可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。

注释:如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。

注释:String.split() 执行的操作与 Array.join 执行的操作是相反的。

推荐文章:

MSDN JScript 8.0 正则表达式介绍  http://msdn.microsoft.com/zh-cn/library/28hw3sce

转载于:https://www.cnblogs.com/kiant71/archive/2010/08/08/1795177.html

JavaScript 正则表达式(RegExp对象、属性、方法、String支持)相关推荐

  1. javascript原生事件句柄、BOM、DOM对象属性方法总结

    javascript原生事件句柄.BOM.DOM对象属性方法总结 JS事件句柄 事件句柄 类型 说明 onabort 事件句柄 图像加载被中断 onblur 事件句柄 元素失去焦点 onfocus 事 ...

  2. JavaScript正则表达式----RegExp类型, 代码说明简单易懂

    RegExp 正则表达式定义 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具.匹配原则: 贪婪匹配 直接量语法 /pattern(匹配规则)/attributes(属性) 创建 ...

  3. jQuery→事件、jQuery事件对象属性方法、多事件、自定义事件

    click() mousedown()mouseup() mousemove() mouseout() hover() focusin() blur()focus() change() select( ...

  4. Javascript对象属性方法集锦

    数组(Array):系列元素的有序集合 属性: length:用于获取数组元素的个数,既最大下标加 1 方法: sort(function):在未指定排序号的情况下,按照元素的字母顺序排列,如果不是字 ...

  5. 在 JavaScript 中访问对象属性的 3 种方法

    您可以通过 3 种方式访问 JavaScript 中对象的属性: 点属性访问器:object.property 方括号属性访问:object['property'] 对象解构:const { prop ...

  6. 【JavaScript】document对象属性

    document对象中,并没有特别的事件,它所支持的都是通用的. 在document上讲解这些属性不具有典型性,但只要掌握了一个对象 在某个事件上的处理方式,也就自然的掌握了在其它对象上处理这个 事件 ...

  7. JavaScript中window对象属性,时间等的总结

    Window对象是客户端javascript最高层对象之一,只要打开浏览器窗口,不管该窗口中是否有打开的网页,当遇到BODY.FRAMESET或 FRAME元素时,都会自动建立window对象的实例. ...

  8. js入门·对象属性方法大总结

    数组(Array):系列元素的有序集合: 详细演示请看:[js入门系列演示·数组 ] http://www.cnblogs.com/thcjp/archive/2006/08/04/467761.ht ...

  9. 17个实用的JavaScript数组和对象的方法

    原文:Useful Javascript Array and Object Methods 作者:Robert Cooper 译者:Jim Xiao 前段时间,我收听了一个很棒的Syntax FM播客 ...

最新文章

  1. 【css】页面出现两个滚动条以及只有一半页面显示内容的解决方法
  2. 2019微生物组—宏基因组分析专题培训开课啦!
  3. Selenium最全超时等待问题的处理方案
  4. centos7 源码编译安装mysql 5.7.21
  5. 聚焦互联网应用和深度学习
  6. 文字居中 qt_Qt编写自定义控件11-设备防区按钮控件
  7. Mybatis基本配置和搭建
  8. Linux的rsync远程数据同步工具
  9. Codeforces Round #112 (Div. 2) E. Compatible Numbers sosdp
  10. 有关Navigation的研究——Silverlight学习笔记[29]
  11. java安卓图片全屏_在Android中全屏显示GIF图片(演示代码)
  12. 简单高效有用的正则表达
  13. 18.高性能MySQL --- 大文件传输
  14. AOV网和AOE网对比
  15. css 点击效果_纯 CSS 实现吸附效果
  16. matlab logistic拟合,用matlab拟合Logistic,4参数logistic
  17. 《网络运维 - 基础知识》
  18. 联想ghost重装系统_史上最全的重装ghost系统错误解决方法大全
  19. 古墓丽影暗影显卡测试软件,决战古墓丽影暗影 畅玩需要什么显卡?
  20. 重装系统后服务器不提示用户密码,明明没有设置密码,重装系统后开机要求输入帐号密码咋办?...

热门文章

  1. PaperNotes(8)-Stein Variational Gradient Descent A General Purpose Bayesian Inference Algorithm
  2. 剑指offer(刷题1-10)--c++,Python版本
  3. 人工智能工程师需具备的技能_2020年软件测试工程师需要具备的技能--需要学什么--面试题有哪些(灵魂拷问)...
  4. 缺乏运动 七种病早早光临
  5. 日本专家给出的存钱高招(图)
  6. 程序员成长之路(转)
  7. 解决:java.lang.IllegalStateException: ApplicationEventMulticaster not initialized
  8. 消息队列 应用场景 解析
  9. Linux chmod命令
  10. dubbo ,dubbo-provider、dubbo-consumer 配置参数说明