主页 > 专题教程 > javascript > js基础 >
来源:自学PHP网 时间:2018-02-08 10:24 作者: 阅读:次
[导读] 正则表达式就是一个字符模式。和String对象类似,在JavaScript中正则表达式也是一个对象,它主要用于字符串的模式匹配。创建正则表达式有两种方式:隐式创建(文字量方法)和显示创...
正则表达式就是一个字符模式。和String对象类似,在JavaScript中正则表达式也是一个对象,它主要用于字符串的模式匹配。创建正则表达式有两种方式:隐式创建(文字量方法)和显示创建(使用构造函数)。 使用隐式方法创建正则表达式的方法为:将文字量的正则表达式赋值给一个变量。正则表达式是包含在两个斜杠之间的一个或多个字符,在后一个斜杠的后面,可以指定一个或多个选项。隐式创建正则表达式的语法为: var regExp = /pattern/flags 其中,“pattern”为指定的匹配模式,flags为0个或多个可选项,这些选项及其含义如下:
例如下面的正则表达式都是有效的正则表达式: var regExp1 = /abc/; var regExp2 = /abc/gi; var regExp3 = /^JavaScript/; var regExp4 = /0[0-9][0-9]*/; var regExp5 = /\binter/i; 显示的创建正则表达式是通过构造函数 var regExp = new RegExp("pattern","flags"); 正则表达式对象 test()方法
在使用 var mystring = "hello regExp!"; var regexp = /reg/i; if(regexp.test(mystring)){ alert("找到了指定模式的字符串"); }else{ alert("没有找到指定模式的字符串"); } 在这个例子中,使用正则表达式 exec()方法
当执行 下面是一个使用 var mystring = "abc 123 def 456 ghj"; var regexp = new RegExp("123"); regexp.exec(mystring);
另外,返回的数组中,第0个元素是与正则表达式相匹配的文本,第1个元素是与正则表达式对象的第1个子表达式相匹配的文本(如果有的话),第2个元素是与正则表达式对象的第2个子表达式相匹配的文本(如果有的话),以此类推。 提示:如果在一个字符串中完成了一次模式匹配之后要开始检索新的字符串,就必须手动地把 lastIndex 属性重置为 0。 另外,无论 RegExpObject 是否是全局模式,exec()都会把完整的细节添加到它返回的数组中。这就是exec()与String.match()的不同之处,后者在全局模式下返回的信息要少得多。因此我们可以这么说,在循环中反复地调用exec() 方法是唯一一种获得全局模式的完整模式匹配信息的方法。 在下面的例子中,演示了 var mystring = "aaa 111 bbb 222 ccc 1111 222ddd"; var regexp = /111/g; var array = regexp.exec(mystring); if(array){ var str = "找到了匹配子串!" +"\n返回数组的值为: "+array +"\n数组元素个数为: "+array.length +"\n被搜索的字符串为: "+array.input +"\n匹配子串的开始位置为: "+array.index +"\n匹配子串后面第一个字符的位置为: "+regexp.lastIndex; alert(str); }else{ alert("没有找到匹配的子串!"); } 执行上面的代码,得到下面的返回结果: 正则表达式对象包含两类属性:类属性和实例属性。类属性也叫作静态属性,例如
实例属性是正则表达式对象的属性,它通常与存储正则表达式的变量相关联。下表中列出了所有的正则表达式实例属性。
下面是一个使用正则表达式属性的例子,查看它的返回结果,可以更好的理解正则表达式的属性。 var mystring = "时间是一切财富中最宝贵的财富。——德奥弗拉斯多"; var regexp = /财富/g; var booleanResult = regexp.test(mystring); if(booleanResult){ document.write("测试的正则表达式的内容为: "+regexp.source +"<br>测试的结果为: "+booleanResult); document.write("<br>下一次搜索开始的位置是: "+regexp.lastIndex +"<br>搜索的字符串为: "+RegExp.input); document.write("<br>最近一次匹配的字符为: "+RegExp.lastMatch); document.write("<br>最近一次匹配的字符前面的子串为: "+RegExp.leftContext); document.write("<br>最近一次匹配的字符后面的子串为: "+RegExp.rightContext); document.write("<br>正则表达式是否跨行搜索: "+regexp.multiline); document.write("<br>正则表达式是否选用了i选项: "+regexp.ignoreCase); document.write("<br>正则表达式是否选用了g选项: "+regexp.global); } 执行上面的代码,我们得到下面的结果: 测试的正则表达式的内容为: 财富 测试的结果为: true 下一次搜索开始的位置是: 7 搜索的字符串为: 时间是一切财富中最宝贵的财富。——德奥弗拉斯多 最近一次匹配的字符为: 财富 最近一次匹配的字符前面的子串为: 时间是一切 最近一次匹配的字符后面的子串为: 中最宝贵的财富。——德奥弗拉斯多 正则表达式是否跨行搜索: false 正则表达式是否选用了i选项: false 正则表达式是否选用了g选项: true |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com