,,javascript的正则匹配方法学习

,,javascript的正则匹配方法学习

本文主要详细介绍javascript的正则匹配方法,帮助你更快速高效的学习javascript正则的相关内容。感兴趣的朋友可以参考一下。

javascript中有三种常规匹配方法:match、exec和test。这些方法都与字符串和RegExp对象有关,但使用场景不同,容易混淆。Match是接收RegExp对象作为参数的字符串方法,而其他方法是接收字符串参数的RegExp对象方法。

var str=' abcdef 12 ab 34 CD 56 ef ';

var patt=new RegExp(' ab ');//这个想法是非全局匹配的

var ret _ test=patt . test(str);

console . log(ret _ test);

var ret _ match=str . match(patt);

console . log(ret _ match);

var ret _ exec=patt . exec(str);

console . log(ret _ exec);

1. regExp.test(string)

这个方法最简单。如果在字符串中找到匹配regExp的字符串,则返回true如果没有找到匹配的字符串,它将返回false。

2. regExp.exec(string)

方法稍微复杂一点。

当regExp没有全局标志时,它的返回值是string array:数组的0 #元素是刚刚匹配的字符串。如果regExp有子表达式,数组的1 #元素是regExp的第一个子表达式,2 #元素是regExp的第二个单词表达式.诸如此类。在上面的例子中,如果patt=newregexp ('f (\ \ d) (\ \ d)',' g ');那么ret_exec将是一个字符串数组:['f12 ',' 1 ',' 2']。

当regExp有一个全局标志(选项G)时,返回值是第一个匹配字符串的数组,数组的第0个元素是刚刚匹配的字符串。如果regExp有子表达式,则数组的第一个元素是regExp的第一个子表达式,第二个元素是regExp的第二个单词表达式.诸如此类。同时,regExp对象的一个属性(lastIndex)被更改,lastIndex被设置为该字符串的最后一个字符所在的位置,以及它之后的位置(在上面的示例中lastIndex=2)。当再次调用regExp.exec(string)时,搜索范围将从regExp.lastIndex开始。此时,返回值仍然是单元素字符串数组,lastIndex=10。我们经常使用while循环来遍历字符串中的匹配项:

var patt=new RegExp('ab ',' g '),

str='abcdef12ab34cd56ef ',ret

while((ret=patt.exec(str))!=null) {

console . log(ret);

}

//输出

['ab']

['ab']

exec方法返回的数组不是标准数组,而是类数组,因为它还有另外两个属性:input是输入字符串,index是当前匹配的字符串在input中第一个字符的位置。

3. string.match(regExp)

这个方法比exec简单,因为它不需要考虑regExp的lastIndex属性。同样,也有两种情况(全局匹配和非全局匹配)。

当regExp没有全局标志时,返回值与调用exec相同,并且返回一个数组。数组的第0个元素是刚刚匹配的字符串。如果regExp有子表达式,则数组的第一个元素是regExp的第一个子表达式,第二个元素是regExp的第二个单词表达式.诸如此类。idea数组也有两个属性:input是输入字符串,index是输入中当前匹配字符串的第一个字符的位置。

当regExp有一个全局标志(G选项)时,就简单了,也符合我们的理解:返回所有匹配字符串的数组。这是一个没有输入属性和索引属性的标准数组。除了匹配的字符串,返回值数组中没有其他信息。

从上面的分析来看,如果你只是想判断一个字符串是否匹配一个正则表达式,那么使用test方法。如果你想一次取出所有匹配的字符串,或者只是找到第一个匹配的字符串,使用match方法。如果要多次匹配,并且需要知道每个匹配的字符串在原字符串中的位置,或者正则表达式中还有子表达式信息需要注意,那么使用exec方法。

以上是javascript正则匹配的各种方法介绍。希望对大家的学习有帮助。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: