1.检索一个固定的关键词: 1.1 String.prototype.indexOf()-->indexOf() 方法返回指定值在字符串对象中首次出现的位置。从 fromIndex 位置开始查找,如果不存在,则返回 -1。语法:str.indexOf(searchValue[, fromIndex])参数: searchValue 一个字符串表示被查找的值。 fromIndex 可选 可选表示调用该方法的字符串中开始查找的位置。可以是任意整数。默认值为 0。如果 fromIndex < 0 则查找整个字符串(如同传进了 0)。如果 fromIndex >= str.length,则该方法返回 -1,除非被查找的字符串是一个空字符串,此时返回 str.length。描述:字符串中的字符被从左向右索引。首字符的索引(index)为 0,字符串 stringName 的最后一个字符的索引是 stringName.length - 1。'Blue Whale'.indexOf('Blue'); // returns 0 'Blue Whale'.indexOf('Blute'); // returns -1 'Blue Whale'.indexOf('Whale', 0); // returns 5 'Blue Whale'.indexOf('Whale', 5); // returns 5 'Blue Whale'.indexOf('', 9); // returns 9 'Blue Whale'.indexOf('', 10); // returns 10 'Blue Whale'.indexOf('', 11); // returns 10区分大小写indexOf 方法区分大小写。例如,下面的表达式返回 -1:'Blue Whale'.indexOf('blue') // returns -1检测是否存在某字符串当检测某个字符串是否存在于另一个字符串中时,可使用下面的方法:'Blue Whale'.indexOf('Blue') !== -1; // true 'Blue Whale'.indexOf('Bloe') !== -1; // false1.2 String.prototype.indexOf()-->lastIndexOf()方法返回调用字符串中的索引对象指定的最后出现的位置,从fromIndex向后搜索。如果没有找到该值返回-1。 语法:str.lastIndexOf(searchValue[, fromIndex])参数: searchValue 一个字符串表示被查找的值。 fromIndex 可选 可选表示调用该方法的字符串中开始查找的位置。可以是任意整数。默认值为 0。如果 fromIndex < 0 则查找整个字符串(如同传进了 0)。如果 fromIndex >= str.length,则该方法返回 -1,除非被查找的字符串是一个空字符串,此时返回 str.length。描述:字符串中的字符被从左向右索引。首字符的索引(index)为 0,字符串 stringName 的最后一个字符的索引是 stringName.length - 1。'canal'.lastIndexOf('a'); // returns 3 'canal'.lastIndexOf('a', 2); // returns 1 'canal'.lastIndexOf('a', 0); // returns -1 'canal'.lastIndexOf('x'); // returns -1 'canal'.lastIndexOf('c', -5); // returns 0 'canal'.lastIndexOf('c', 0); // returns 0 'canal'.lastIndexOf(''); // returns 5 'canal'.lastIndexOf('', 2); // returns 2区分大小写lastindexOf 方法区分大小写。例如,下面的表达式返回 -1:'Blue Whale, Killer Whale'.lastIndexOf('blue'); // returns -1
2.检索有没有相应关键字: String.prototype.search()-->String.prototype.search()方法执行一个搜索匹配正则表达式字符串对象。 语法:str.search(regexp)参数: regexp 该参数可以是需要在 stringObject 中检索的子串,也可以是需要检索的 RegExp 对象。 注释:要执行忽略大小写的检索,请追加标志 i。说明search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。实例function testinput(re, str) { var midstring; if (str.search(re) != -1) { midstring = ' contains '; } else { midstring = ' does not contain '; } console.log(str + midstring + re); } search()方法对大小写敏感 : 在本例中,我们将执行一次忽略大小写的检索:
3.检索所有关键词的内容: String.prototype.match()-->match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。 语法:str.match(regexp)参数: searchvalue必需。规定要检索的字符串值。regexp必需。规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。返回值存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。说明match() 方法将检索字符串 stringObject,以找到一个或多个与 regexp 匹配的文本。这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g。如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。除了这些常规的数组元素之外,返回的数组还含有两个对象属性。index 属性声明的是匹配文本的起始字符在 stringObject 中的位置,input 属性声明的是对 stringObject 的引用。如果 regexp 具有标志 g,则 match() 方法将执行全局检索,找到 stringObject 中的所有匹配子字符串。若没有找到任何匹配的子串,则返回 null。如果找到了一个或多个匹配子串,则返回一个数组。不过全局匹配返回的数组的内容与前者大不相同,它的数组元素中存放的是 stringObject 中所有的匹配子串,而且也没有 index 属性或 input 属性。注意:在全局检索模式下,match() 即不提供与子表达式匹配的文本的信息,也不声明每个匹配子串的位置。如果您需要这些全局检索的信息,可以使用 RegExp.exec()。实例var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; var regexp = /[A-E]/gi; var matches_array = str.match(regexp); console.log(matches_array); // ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']
4.既可以找到关键字的位置,又可以返回关键字的位置: RegExp.prototype.exec()-->exec() 方法为指定的一段字符串执行搜索匹配操作。它的返回值是一个数组或者 null。 如果你仅仅是为了知道是否匹配,可以使用 RegExp.test() 方法,或者 String.search() 方法。语法regexObj.exec(str)参数str要用正则表达式匹配的字符串。返回值如果成功匹配,exec 方法返回一个数组,并且更新正则表达式对象的属性。返回的数组包括匹配的字符串作为第一个元素,紧接着一个元素对应一个成功匹配被捕获的字符串的捕获括号(capturing parenthesis)。(one item for each capturing parenthesis that matched containing the text that was captured.)如果匹配失败,exec 方法将返回 null。描述// Match 'quick brown' followed by 'jumps', ignoring characters in between // Remember 'brown' and 'jumps' // Ignore case var re = /quick\s(brown).+?(jumps)/ig; var result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog');下面的表格展示这个脚本的返回值:对象属性/索引描述例子result[0]匹配的全部字符串Quick Brown Fox Jumps[1], ...[n]括号中的分组捕获[1] = Brown [2] = Jumpsindex匹配到的字符位于原始字符串的基于0的索引值4input原始字符串The Quick Brown Fox Jumps Over The Lazy DogrelastIndex下一次匹配开始的位置25ignoreCase是否使用了'i'标记使正则匹配忽略大小写trueglobal是否使用了'g'标记来进行全局的匹配.truemultiline是否使用了'm'标记使正则工作在多行模式(也就是,^ 和 $ 可以匹配字符串中每一行的开始和结束(行是由 \n 或 \r 分割的),而不只是整个输入字符串的最开始和最末尾处。)falsesource正则模式的字符串quick\s(brown).+?(jumps)实例
注意:不要把正则表达式字面量(或者正则表达式构造器)放在 while 条件表达式里。由于每次迭代时 lastIndex 的属性都被重置,如果匹配,将会造成一个死循环。