一个JS正则的题

2016-02-19 13:51 2 1 收藏

下面是个简单易学的一个JS正则的题教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - Web开发 】

贴出来与大家共勉。

先看一段代码,
script
var objReg = /^[a-zA-Z]{1}(:){1}$/gi;
alert(objReg.test("a:"));//返回true
alert(objReg.test("a:"));//返回false
/script

为什么第二个test会返回false?是不是觉得奇怪。
原因我解答如下:
test实际上与exec方法的执行方法是一致的,只是返回值不一样。test返回的是true or false(如果exec返回的不是null),exec返回的是pattern(匹配)。
而exec的执行过程为:带有g参数时,下次匹配时,自动会跳到lastIndex后的位置,也就是这里的第2个位置。而这个位置与pattern显然不匹配。因此返回false。

解决方法:
(1)
可以不使用g(全局参数)也就是这样-
script
var objReg = /^[a-zA-Z]{1}(:){1}$/i;
alert(objReg.test("a:"));//返回true
alert(objReg.test("a:"));//返回true
/script

(2)
可以用lastIndex=0来还原-
var objReg = /^[a-zA-Z]{1}(:){1}$/gi;
alert(objReg.test("a:"));//返回true
objReg.lastIndex=0;
alert(objReg.test("a:"));//返回true

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

来源:https://www.tulaoshi.com/n/20160219/1605461.html

延伸阅读
标签: Web开发
很多语言都有类似php中的include和require功能的函数,而唯独javascript没有。  很早就想在js中实现类似的功能,尝试了很多次都没有成功,那天在google上搜索一些关于动态加载css文件的关键词时,发现一个blog(地址找不到了)上的一个为网页的head标签增加link元素的函数,于是就改了一下,写了这个函数。  用法:  include...
标签: Web开发
function cls_marquee(id,id1,id2,sp){     this.obj_id=id;     this.obj_id1=id1;     this.obj_id2=id2;     this.speed=sp;     eval(this.obj_id2+".innerHTML="+this.obj_id1+".innerHTML");          function Marque...
标签: Web开发
主要是集成了常用的扩展,包括Dom与String、Array、StringBuffer、NameSpace等,当然还少不了Ajax。体积约8k。因为严格控制体积,所以功能有限。如果只要Ajax部分,就1k而已。 这个小框架已经应用到公司的项目,并开始逐步在前端展示页面上接替prototype.js。以后将围绕这个框架做一些应用。 代码如下: /* *    My&n...
标签: Web开发
代码如下: input type=text id=abutton onclick="Session.save('a',a.value);"button onclick="alert(Session.load('a'))" body SCRIPT LANGUAGE="JavaScript" !-- var Session={ isinit:false, init:function(){ SessionObj = document.createElement('input'); SessionObj...
标签: Web开发
[Ctrl+A 全选] 构造正则替换: p你好,我是CnLei./pp我的个人网站:http://www.cnlei.com/p [Ctrl+A 全选]

经验教程

511

收藏

32
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部