重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
因为.*表示点0到无数次重复,等同于.{0,},也就是说可以不重复(0次重复),所以你第二个正则表达式,可以等同于第一个正则表达式,因为.*可以为0次重复.
成都创新互联公司主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、响应式网站、程序开发、网站优化、微网站、小程序定制开发等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的网站设计制作、网站建设、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。
如果你把.*改成.+输出就是false了,因为.+表示点1到无数次重复,等同于.{1,}
下面给你一个.+的例子,你看看吧,结果为false
script type=text/javascript
var pattem = /8go..+gle8/;
var str = '8google8';
alert(pattem.test(str));
/script
运行结果
false
"." 表示:匹配除换行符以外的任意字符
如:888 8-8 8a8 等 中间可以写任意字符
JavaScript通过RegExp类来支持正则表达式,举一个最简单的例子:
复制代码
代码如下:
var
regApple
=
new
RegExp("apple");
它可以匹配一个字符串中出现的第一个"apple"字符串,并且对大小写敏感。在构造方法中加入第二个参数"g"则代表的搜索出字符串中所有的
"apple",这里"g"代表"global"。如果第二个参数为"i",则代表着case-insensitive,匹配过程中将不考虑字母的大小写。将上述两者综合起来,可以搜索出所有"apple"字符串,并且不考虑大小写问题。
复制代码
代码如下:
var
regApple
=
new
RegExp("apple",
"gi");
正则表达式有着并不唯一的表示方法,使用Perl语言中的语法,可以将上述表达式表示为:
复制代码
代码如下:
var
regApple
=
/apple/gi;
创建了一个RegExp对象后,RegExp的方法可以构造出不同的匹配方式,因为正则表达式是对字符串进行的操作,所以String的一些方法在构造正则表达式的过程中也扮演着重要角色。
RegExp对象的方法
复制代码
代码如下:
var
sampleString
=
"Greenapple";
var
regApple
=
/apple/;
alert(regApple.test(sampleString));
上面代码输出的结果是"true",因为sampleString中包含了需要匹配的字符串"apple",这是最简单的检测方式。有时,我们需要知道匹配的详细结果,例如:
复制代码
代码如下:
var
sampleString
=
"green
apples,
red
apples";
var
regApple
=
/apple/g;
var
arr
=
regApple.exec(sampleString);
通过使用exec()方法,返回的arr是关于匹配结果的一个数组,包括每一个匹配的值及其所在的段,例如上例中是"green
apples"还是"red
apples"。match()方法有着和exec()相同的功能,只是表达方式不同:
复制代码
代码如下:
var
sampleString
=
"green
apples,
red
apples";
var
regApple
=
/apple/g;
var
arr
=
sampleString.match(regApple);
search()方法和indexOf()比较类似,返回第一个匹配的字符串所在的位置:
复制代码
代码如下:
var
sampleString
=
"green
apples,
red
apples";
var
regApple
=
/apple/gi;
alert(sampleString.search(regApple));
//输出"6"
String的方法
String的replace()方法可以将指定的字符串替换为另一个字符串:
复制代码
代码如下:
var
sampleString
=
"There
is
a
green
apple.";
alert(sampleString.replace("green",
"red"));
//输出"There
is
a
red
apple."
将replace()的第一个参数替换为一个正则表达式,可以达到同样的效果:
复制代码
代码如下:
var
sampleString
=
"There
is
a
green
apple.";
var
regApple
=
/apple/;
alert(sampleString.replace(regApple,
"red"));
//输出"There
is
a
red
apple."
replace()的第二个参数可以替换为一个function(),该function()接受一个匹配字符串作为参数,返回一个替换字符串。(存在疑问)
使用正则表达式可以实现String的split()方法相同的功能。
复制代码
代码如下:
var
fruit
=
"apple,pear,lemon";
var
arr
=
fruit.split(",");
使用正则表达式:
复制代码
代码如下:
var
fruit
=
"apple,pear,lemon";
var
reg
=
/\,/;
var
arr
=
fruit.split(reg);
一、
当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。
二、
有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:
a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。
三、代码/语法 说明
① *? 重复任意次,但尽可能少重复
② +? 重复1次或更多次,但尽可能少重复
③ ?? 重复0次或1次,但尽可能少重复
④ {n,m}? 重复n到m次,但尽可能少重复
⑤ {n,}? 重复n次以上,但尽可能少重复