正則全域性g的問題

2021-08-26 15:26:13 字數 843 閱讀 2825

let add="121432453253";

let abb="1214321321"

let testdemo=/^([0-9]+)$/g

if(testdemo.test(add))else

if(testdemo.test(abb))else

按理說兩次都列印true的,後來我把全域性查詢g去掉,就兩個都是true了,導致這樣的原因是:

如果正規表示式有指定g引數全域性匹配 , 則每次test()是依次獲得下乙個匹配。舉例說明:

var num="123";

var argur=/([0-9])/g;

for(i=0;i<8;i++)

上面的**結果是3個true,1個false,再3個true,再1個false。

true true true false true true true false
第1次test匹配數字1,第2次test數字2,第3次test匹配數字3,第4次test找不到匹配,之後又從頭重新開始:

第5次重頭開始test匹配數字1,第6次test數字2,第6次test數字3,第8次test找不到匹配............

如果正規表示式沒有g引數,則每次test都是從頭開始匹配,不存在上述問題。

沒有g引數的正規表示式:

var num="123";

var argur=/([0-9])/g;

for(i=0;i<8;i++)

都是true,

不過利用這個全域性g也可以列印出你每次想要匹配到的資料,看你有沒有這個需求而已

正則全域性匹配 g

每次匹配使用當前正則物件的lastindex屬性的值作為在目標字串中開始查詢的起始位置。lastindex屬性的初始值為0,找到匹配的項後lastindex的值被重置為匹配內容的下乙個字元在字串中的位置索引,用來標識下次執行匹配時開始查詢的位置,如果找不到匹配的項lastindex的值會被設定為0。...

nginx正則匹配 全域性常量

1 nginx location 規則匹配 識別符號匹配後面跟乙個字串。匹配字串後將停止對後續的正規表示式進行匹配。如 location images 在匹配了 images 這個字串後就停止對後續的匹配 精準匹配,如 location 只會匹配urrl為 的請求 區分大小寫的匹配 不區分大小寫的匹...

問題 G 日曆問題

題目描述 在我們現在使用的日曆中,閏年被定義為能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它們不是閏年。例如 1700,1800,1900 和 2100 不是閏年,而 1600,2000 和 2400是閏年。給定從公元2000年1月1日開始逝去的天數,你的任務是給出這一天是哪年...