網站首頁 編程語言 正文
明明是符合條件的,第一次校驗是true,第二次就變成了false不符合,原因
例子
export const ngx = {
// 郵箱
email: () => /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/g,
// 手機號
mobile:() => /^[1]\d{10}$g/,
number:() => /^[0-9]*/g,
}
for (let i = 0; i < baseForm.value.length; i++) {
// 手機校驗
if (!ngx.mobile().test(Number(inpValue1)) {
return message.error(`請正確輸入手機號`)
}
if (!ngx.email().test(inpValue2)) {
message.error(`請正確輸入郵箱`)
return
}
}
第一次符合條件兩個都為true,第二次兩個都為false
原因是正則匹配/g的這個問題,
每個正則匹配都有一個lastIndex的屬性
這屬性在后面/g的時候會記錄最后一個符合條件的下標的位置,導致下次一遍歷是從這個下標開始,
比如ngx.test(13566664444) //這個時候第一次校驗結束lastIndex在第11個位置,再次校驗是從第11為開始i往后校驗,沒有數據就顯示false
所以,解決這個問題就是取消/g以及將這個屬性寫成閉包的形式
export const ngx = {
// 郵箱
email: () => /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/,
// 手機號
mobile:() => /^[1]\d{10}$/,
number:() => /^[0-9]*/,
}
for (let i = 0; i < baseForm.value.length; i++) {
// 手機校驗
if (!ngx.mobile().test(Number(inpValue1)) {
return message.error(`請正確輸入手機號`)
}
if (!ngx.email().test(inpValue2)) {
message.error(`請正確輸入郵箱`)
return
}
}
這樣一來不管怎么for循環lastIndex都是從下標0開始
原文鏈接:https://blog.csdn.net/m0_64207574/article/details/131113705
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-02-11 g2繪制點圖,鼠標移入點上出現tooltip,對應的label消失
- 2023-11-16 nvidia jetson設備(Jetson Nano, TX1/TX2,Xavier NX/AGX
- 2022-10-27 Python使用pandas將表格數據進行處理_python
- 2022-07-28 Redis基本數據類型List常用操作命令_Redis
- 2022-08-19 Python數據處理pandas讀寫操作IO工具CSV解析_python
- 2023-03-04 React深入分析更新的創建源碼_React
- 2022-03-25 一篇文章讓你輕松理解C++中vector和list區別(c++中vector是什么)
- 2022-05-15 go?RWMutex的實現示例_Golang
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支