首页 新闻 搜索 专区 学院

一个简单的JS正则

0
悬赏园豆:20 [已关闭问题] 关闭于 2018-02-02 22:47

var percentReg = /%/ig;

var options = {
  width: "90%",

  height: "90%"
};

percentReg.test(options.width)

==> true

percentReg.test(options.height)

==> false

why?

问题补充:

多次执行,我发现一次True,一次False,请问大神这是什么毛病?

Ropean的主页 Ropean | 初学一级 | 园豆:121
提问于:2018-02-02 22:39
< >
分享
所有回答(1)
0

原来这个问题实际上是/g导致的,而此时也才发现,实际上这个正则我误用了一个/g.因为/g代表全局匹配,所以判断正则时内部是有一个lastIndex来记录最后匹配的位置.当重复调用的时候,会接着上次的lastIndex继续匹配,故而将导致判断出错.明白了原理解决起来也就很明了了:

1.去掉/g,在不需要/g的情况下不要随意添加/g标识

2.第二次匹配前,手动将lastIndex置0,以上面的例子来说:reg.lastIndex()=0即可.

 

参考:http://www.jb51.net/article/89384.htm

Ropean | 园豆:121 (初学一级) | 2018-02-02 22:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册