前言
1.
正则表达式
① 第一种定义(构造函数) 例:var reg = new RegExp("abc", "g");
② 第二种定义(文本定义)字面量 :/pattern/atrribute 例:var reg = /abc/g;
2.
从方法隶属对象上分类
RegExp | String |
---|---|
match() | test() |
search() | exec() |
replace() | |
split() |
3.
String对象的方法
方法 | 定义 | 输入参数 | 返回值 |
---|---|---|---|
stringObject.match(searchValue/regexp) | 字符串内检索指定的值,或找到一个或多个正则表达式的匹配 | 检索的字符串值或正则表达式 | 匹配结果的数组 |
stringObject.search(searchValue/regexp) | 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串 | 检索的字符串值或正则表达式 | 第一个与参数相匹配的子串的起始位置,如果没有则返回-1 |
stringObject.replace(regexp/substr, replacement) | 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串 | 被替换的子字符串或者要匹配的正则表达式 | 新的字符串 |
stringObject.split(separator, howmany) | 用于把一个字符串分割成字符串数组 | separator - 字符串或正则表达式 howmany(可选)- 指定返回数组的最大长度 |
一个字符串数组 |
4.
RegExp对象的方法
方法 | 定义 | 输入参数 | 返回值 |
---|---|---|---|
RegExpObject.test(string) | 用于检测一个字符串是否匹配某个模式 | 要检索的字符串 | true/false |
RegExpObject.exec(string) | 用于检索字符串中的正则表达式的匹配 | 要检索的字符串 | 返回存放匹配结果的数组,找不到匹配,返回null |
示例
1、String 对象的方法示例
① match()
// 参数为字符串
var str = 'Hello world!';
console.log(str.match('world'));
// 参数为正则表达式
var text = 'cat hat';
var pattern = /.at/gi;
console.log(text.match(pattern));
输出结果
②search()
// 参数为字符串
var str = 'Hello world!';
console.log(str.search('world')); // 6
console.log(str.search('halo')); // -1
// 参数为正则表达式
var text = 'cat hat';
var pattern = /.at/gi;
console.log(text.search(pattern)); // 0
search() 方法始终是从字符串开头向后查找模式。
③ replace()
// 参数为字符串
var str = 'Hello world!';
console.log(str.replace('world', 'Hello')); // Hello Hello!
// 参数为正则表达式
var text = 'cat hat';
var pattern = /.at/gi;
console.log(text.replace(pattern, 'Hello world')); // Hello world Hello world
④ split()
// 参数为字符串
var str = 'cat, fish, monkey';
console.log(str.split(',')); // ["cat", " fish", " monkey"]
// 参数为正则表达式
var text = 'cat hat';
var pattern = /\s/gi;
console.log(text.split(pattern)); // ["cat", "hat"]
2、RegExp对象的方法示例
① test()
var str = 'cat';
var reg = /.at/gi; // 或者 var reg = new RegExp('.at', 'gi');
console.log(reg.test(str)); // true
console.log(reg.test(str)); // false
console.log(reg.test(str)); // true
第一次进行匹配时,匹配到了‘cat’,所以返回true;当进行第二轮匹配时,会从上次匹配的位置继续往下匹配,所以返回false,第三次匹配时,回到了开始位置进行匹配,所以返回true。
② exec()
var text = 'mom and dad and baby';
var pattern = /mom( and dad( and baby)?)?/gi;
var matches = pattern.exec(text);
console.log(matches);
输出结果
- 如果在模式中设置了全局标志(g),每次也只是返回一个匹配项。
- 在不设置全局标志的情况下,在同一个字符串上多次调用exec()将始终返回第一个匹配项的信息。
- 在设置全局标志的情况下,在同一个字符串上多次调用exec()则会在字符串中继续查找新匹配项。
var text = 'cat, bat, sat, fat';
var reg = /.at/;
var matches = reg.exec(text);
console.log(matches.index); // 0
console.log(matches[0]); // cat
console.log(reg.lastIndex); // 0
matches = reg.exec(text);
console.log(matches.index); // 0
console.log(matches[0]); // cat
console.log(reg.lastIndex); // 0
var reg2 = /.at/g;
matches = reg2.exec(text);
console.log(matches.index); // 0
console.log(matches[0]); // cat
console.log(reg2.lastIndex); // 3
matches = reg2.exec(text);
console.log(matches.index); // 5
console.log(matches[0]); //bat
console.log(reg2.lastIndex); // 8
网友评论