jquery正则中问号的三种[说四种那是忽悠人]用法详解及在线实例演示推荐 亲测 原创 收藏

文章标签: jquery正则
  • :
  • 03-09 19:45
  • :
  • 107次
  • :
  • 0条
  • 7赞

简介本篇文章讲述在jquery正则中,问号的三种相关用法及非常详细的在线实例演示,通过此篇文章,保证你能掌握正则中问号的使用方法。

问号在正则里有三种特殊的用法,本文站长就给大家详细说说在jquery里,我们使用正则的时候,问号具体有哪三种特殊的用法,并且每一种用法站长都会附上完整的在线实例演示。

本篇文章站长花了不少时间,希望对您能有所帮助,在线实例演示的地址在文章的最末端。

第一种用法,结构类似:n? 这时问号在正则里表示通配符,表示匹配零或一个n的字符串,看下面的实例:

<script language="javascript">
var str="aabbccaabbcc";
document.write(str.match(/a?/)); //输出:a
document.write(str.match(/ab?/)); //输出:a
document.write(str.match(/abc?/)); //输出:ab
document.write(str.match(/abb?/)); //输出:abb
document.write(str.match(/abbc?/)); //输出:abbc
document.write(str.match(/abbcc?/)); //输出:abbcc
document.write(str.match(/abbccc?/)); //输出:abbcc
</script>

第二种用法,结构类似:*?+???{n,m}?{n,}?  这时,问号表示的意思是尽量少的匹配,也就是我们常用的“非贪婪模式”,下面站长先给大家详细说下这几种写法的具体含义和区别,然后再举详细的实例来说明:

*?     表示重复任意次,但尽可能少重复
+?     表示重复1次或更多次,但尽可能少重复
??     表示重复0次或1次,但尽可能少重复
{n,m}?    表示重复n到m次,但尽可能少重复
{n,}?     表示重复n次以上,但尽可能少重复

下面来看详细的实例:

<script language="javascript">
var str="aabbccaabbcc";
document.writeln(str.match(/a.*c/)); //输出:aabbccaabbcc
document.writeln(str.match(/a.*?c/)); //输出:aabbc
document.writeln(str.match(/a.+b/)); //输出:aabbccaabb
document.writeln(str.match(/a.+?b/)); //输出:aab
</script>

第三种用法,结构类似:(?:n)  、(?=n)  (?!n) 这种情况下,问号表示的意思是“不捕捉”,正常情况下,正则里小括号匹配到的内容我们可以用“$1,$2”的方式来引用,而如果在左边括号边加上了问号和冒号就表示不捕捉这个小括号匹配到的内容,下面来看具体的实例:

<script language="javascript">
var str="aabbccaabbcc";
document.writeln(str.replace(/(a)(.*)/,"$1"));//输出a
document.writeln(str.replace(/(?:a)(.*)/,"$1"));//输出abbccaabbcc
</script>

(?:n) 匹配n,但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。

//比如 我们要匹配字符串里的abdac里的ab或ac,可以这样:
var str="abdac";
var reg=/a(?:b|c)/ig;
var str_match=str.match(reg));    //结果:(2) ["ab", "ac"]

(?=n) 也是非获取匹配,正向预查,在任何匹配 n 的字符串开始处匹配查找字符串。

直白的话来说,就是 “后面是....”的意思

//先来看一个实例:
var str="abdac";
var reg=/a(?=b|c)/ig;
var str_match=str.match(reg));    //结果:(2) ["a", "a"]

从上面的实例看出,(?=n)的含义,用直白的话来说,就是,匹配后面跟着b或c的a。

(?!n) 同样是非获取匹配,负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。

直白的话来说,就是 “后面不是....”的意思

var str="abdac";
var reg=/a(?!b)/ig;
var str_replace=str.replace(reg,"A")    //结果:abdAc

上面的实例,直白的话来解释就是:获取后面跟着的不是b的a,把它替换成大写的A。

好了,正则中问号的三种用法就介绍到这里了,网上搜索到的文章大多数都说是四种用法,其实第四种用法就是匹配问号本身,只用像匹配其它特殊符号那样,前面加上斜杠就行了,所以说网上大多数的文章都是在扯蛋。。。

下面附上详细的在线实例演示:

正则中问号的三种用法的在线实例演示



您正在找的文章可能是: