te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>Javascript Regex with .test() - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Javascript Regex with .test() - Stack Overflow

programmeradmin3浏览0评论
> var p = /abc/gi;
> var s = "abc";
> p.test(s);
  true
> p.test(s);
  false;

When I run this code on console of Chrome I Have this output above. Each time I call .test() I get a different value. Someone could explain to me why this happens? thanks

> var p = /abc/gi;
> var s = "abc";
> p.test(s);
  true
> p.test(s);
  false;

When I run this code on console of Chrome I Have this output above. Each time I call .test() I get a different value. Someone could explain to me why this happens? thanks

Share Improve this question edited Feb 21, 2023 at 9:11 Penny Liu 17.4k5 gold badges86 silver badges108 bronze badges asked Oct 5, 2011 at 11:36 Felipe CoutoFelipe Couto 831 silver badge5 bronze badges 1
  • More dupes: Interesting test of Javascript RegExp and Regular Expression test can't decide between true and false – Andy E Commented Oct 5, 2011 at 11:54
Add a ment  | 

3 Answers 3

Reset to default 9

The behavior is due to the "g" modifier, i.e. matches three times, no match the fourth time:

> var p = /a/gi;
> var s = "aaa";
> p.test(s)
true
> p.test(s)
true
> p.test(s)
true
> p.test(s)
false

See similar question: Why RegExp with global flag in Javascript give wrong results?

The g flag causes the RegExp literal your using to track the matches LastIndex

If you were to;

print( p.test(s), p.lastIndex )
print( p.test(s), p.lastIndex )

You would see

true,3
false,0

So the 2nd test fails as there is no incremental match from the 1st.

It's because of the /g flag. Every consecutive search starts from the character last matched in the previous search. In your case, in the second run it starts from the end of the string and returns false. The third time it starts from the beginning again. And so forth.

Also, take a look at this question: Why RegExp with global flag in Javascript give wrong results?

发布评论

评论列表(0)

  1. 暂无评论