注:pattern 为RegExp的实例, str 为String的实例
用法说明返回值字符串的test方法,比较常用在判断语句中,最简单的RegExp方法了,用于检测一个字符串是否匹配某个模式:
RegExpObject.test(string)如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false:
/\d/.test('asdf2') // --true 检测字符串`'asdf2'`中是否函数数字exec()exec()方法功能非常强大,它是一个通用的方法方法,用于比较复杂的模式匹配或者是说你为你提供更多的信息:
RegExpObject.exec(string)如果在string中找到了匹配的文本,则返回一个包含这些文本的数组,否侧返回null。这里有几个注意的地方:
深入前看看RegExp的实例有哪些属性:
这里稍微陌生一点的就是lastIndex属性了,因为我们不会显示的需要用到它。但它还是挺重要的:
例1:非全局匹配
结论:
例2:全局匹配
结论:
那当要获取全局匹配的全部匹配项时,可以通过循环来获取:
var reg = /\d/g, result = [], crt;while((crt = reg.exec('a123')) !== null){ result = result.concat(crt)};result; //["1", "2", "3"]String对象方法1. match()match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。在一定程度上它与上面的exec()有些相似,看一下吧:
例1:非全局匹配
var a = 'aaaa'.match(/\w/);console.log(a); // ["a", index: 0, input: "aaaa"]可以看到,和exec()一样,在数组中返回了index 和 input属性。
例2:全局匹配
var a = 'aaaa'.match(/\w/g);console.log(a); // ["a", "a", "a", "a"]全局匹配就和exec方法有很大的不同了,他直接返回了所有符合匹配的子字符串的数组,另外,index和input属性也不在其中了,所以这个方法效率可能会高一些,但是如果你需要更多的信息,则用exec()吧
2. replace()这也是一个比较灵活常用的方法,它用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
这个方法接收两个必须的参数:
返回结果:
replacement:为函数时:
'aaaa'.replace(/\w/g, function() { return 'b';}); // "bbbb"'aaaa'.replace(/\w/g, function(value) { return value.toUpperCase();}); // "AAAA"结论:
特殊的 $:
replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。
字符替换文本来一发:
//第一种情况:'aa11AA'.replace(/([a-z]+)(\d+)([A-Z]+)/g, '$1'); // "aa"'aa11AA'.replace(/([a-z]+)(\d+)([A-Z]+)/g, '$2'); // "11"'aa11AA'.replace(/([a-z]+)(\d+)([A-Z]+)/g, '$3'); // "AA" //猜想 如果是 $4 回事什么呢? undefined ? 'aa11AA'.replace(/([a-z]+)(\d+)([A-Z]+)/g, '$4'); // "$4" //所以,要是没有该子项,则当成普通字符串处理了 //第二种情况:'aa11AA'.replace(/([a-z]+)(\d+)([A-Z]+)/g, '$&'); //"aa11AA"//第三种情况:'aa11AA'.replace(/(\d+)/g, '$`'); //"aaaaAA"//第四种情况:'aa11AA'.replace(/(\d+)/g, "$'"); //"aaAAAA"//第五种情况:'aa11AA'.replace(/(\d+)/g, '$$'); //"aa$AA"先这样吧,有问题再补充了,( ╯□╰ )
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |