js相同的正則多次呼叫test 返回的值卻不同

2022-06-28 20:21:08 字數 528 閱讀 8056

專案中檔案上傳需要驗證檔案的格式,第一次正常,第二次就驗證不通過了。在驗證的地方console.log()兩遍,發現結果不一樣 !!!

正則和檔名都沒變,但是兩次的驗證結果不同。

this.reg = /\.(xlsx|xls)$/ig;
console.log(this

.reg.test(newfile.name)) //true

console.log(

this.reg.test(newfile.name)) //false

lastindex 這一屬性用於匹配下次檢索的開始位置,該屬性可讀寫,exec() 或 test()方法可以改寫這一屬性。

當找不到匹配內容是,lastindex被自動設為0。

解決方案

第一種方案是將g去掉,關閉全域性匹配。

第二種就是在每次匹配之前將lastindex的值設定為0。

正則多次呼叫test 返回的值卻不同 md

在解決多埠的單項驗證時,需要將以逗號分隔的埠切割為陣列。對陣列進行遍歷正則判斷 問題 如下 let value input val let ports value.split let flag true let exp d g ports.foreach port return flag 說明 1 ...

JS正則test )方法

每個正規表示式都有乙個 lastindex 屬性,用於記錄上一次匹配結束的位置,包括exec方法。var re 1 9 d gi var str 123456 alert re.test str 返回true str 1234567 alert re.test str 返回false 解決方法 或 ...

事務內執行多次相同的Proc

string strcon server 192.168.161.170 database oppermissionmanagement1 uid sa pwd itdddd string ss sp ma password insert using sqlconnection con new sq...