目录
问题
- 最近在js中使用正则时,出现了相同的字符串,给相同的正则进行匹配,结果非常规律地返回一次true,一次false,一次true,一次false的结果
- 一开始感觉非常不可思议,因为正则表达式和字符串都一样,进行匹配却得到了不同的结果,而且还固定交替出现true和false。
- 后来直接百度搜"JS正则表达式离奇bug",结果出现了很多关于全局匹配/g的解答,这也正是我遇到的问题的根源所在。
- 下面我们详细聊聊。
全局匹配/g
- 首先我们需要知道正则表达式的匹配方式,总的来说无非两种:
- 搜索:只要求给定字符串中存在可以被正则表达式匹配的字符(或字符串)即算成功
- 例如:
- 给定字符串:"123abc456"
- 正则表达式:/\d+/
- 结果:true
- "123"
- "456"
- 可以看到,整个字符串并不能匹配正则表达式,但它存在可以匹配的子串"123"和"456",因此匹配成功,或者说是搜索成功
- 例如:
- 完全匹配:即给定的字符串必须可以被正则表达式完全匹配才算成功
- 例如:
- 给定字符串:"123abc456"
- 正则表达式:/^\d+$/
- 注意表达式的开头多了个^(即从字符串开头)和末尾的$(到字符串的结尾),表示整个字符串得从头到尾正确匹配我们的正则表达式
- 结果:false
- 由于字符串不能匹配正则表达式,因此匹配失败
- 例如:
- 搜索:只要求给定字符串中存在可以被正则表达式匹配的字符(或字符串)即算成功
- 而本文的问题就出现在搜索模式上
- 全局匹配。在声明正则表达式之后加上g,如:
- /\d+/g 或 new RegExp("\\d+", "g")
- 注意全局匹配是搜索的方式
- 之前就是理解错了全局匹配的意思,以为它是完全匹配,所以用错了
分析
- 使用全局匹配时,正则表达式对象的 lastIndex 属性需要注意:
- 初始化默认为0
- 若匹配成功,则lastIndex被置为被匹配的子字符串的末尾下标再+1
- 若匹配失败,则lastIndex被置为0
- 每次使用该正则表达式对象去匹配时,都会从这个lastIndex开始
- 因此,在文章开头,我们使用同一个全局匹配模式的正则对象去匹配时,过程如下:
- 假设字符串为"123456"
- 假设正则表达式为:/\d+/g
- 第一次使用,lastIndex初始为0,字符串整个被匹配,lastIndex = 6(被匹配字符串的末尾(字符6)的下标5 + 1),匹配成功
- 第二次使用,从lastIndex=6开始拿字符串,正则对象拿到的待匹配字符串其实就是空串 "",显然空串不能匹配我们的正则,因此匹配失败,注意此时lastIndex因匹配失败被置为0
- 第三次使用,从lastIndex=0开始,又和第一次使用一样,匹配成功且lastIndex = 6
- 第四次使用,从lastIndex=6开始,和第二次使用一样,拿到了空串,匹配失败且lastIndex = 0
- 因此会出现交替的成功、失败
解决
- 知道了原因后其实就解决就简单了,这里主要由四种办法:
- 1:简单粗暴把正则表达式的全局匹配/g去掉,使用完全匹配,即创建正则对象时不使用/g参数
- 2:每次使用前,把正则对象的 lastIndex 手动置0
- 3:每次都重新创建正则对象,因为初始化默认的lastIndex为0,本质和第二种办法差不多
- 4:奇特的方法,既然是本应匹配成功的时候却交替的出现成功和失败,而本应匹配失败的时候是一直出现失败。那么我们就可以连续两次进行匹配,将两次的结果或 | 起来就可以了。
- 如:字符串str = "123456" 和正则表达式 reg = /\d+/g
- return (reg.test(str) | reg.test(str));
- 但最好还是直接用第一种,明确你使用正则的目的
mexican border pharmacies shipping to usa: mexico pharmacies prescription drugs – reputable mexican pharmacies online
purple pharmacy mexico price list mexican pharmaceuticals online mexican rx online
台灣線上娛樂城
富遊娛樂城評價 : 全台唯一5分鐘內快速出金,網紅一致好評看這篇!
富遊娛樂城以玩家需求為核心對於品牌保證安全、公正、真實、順暢,成為玩家在線上賭場最佳合作夥伴,擁有各大網紅、網友評價保證出金。
富遊是台灣註冊人數第一名的線上賭場,富遊是台灣最受歡迎的線上賭場,已吸引超過30萬玩家註冊。首次存款1000元贈1000元獎金,且只需1倍的流水。新手玩家還可獲得免費體驗金,體驗館內的所有遊戲。富遊也時常舉辦不同優惠活動,沒有困難的下注流水要求,相當適合新手與資深玩家遊玩。
富遊娛樂城平台詳情資訊
賭場名稱 : RG富遊
創立時間 : 2019年
博弈執照 : 馬爾他牌照(MGA)認證、英屬維爾京群島(BVI)認證、菲律賓(PAGCOR)監督競猜牌照
遊戲類型 : 真人百家樂、運彩投注、電子老虎機、彩票遊戲、棋牌遊戲、捕魚機遊戲
合作廠商 : 22家遊戲平台商
支付平台 : 各大銀行、四大便利超商
存取速度 : 存款15秒 / 提款3-5分
單筆提款金額 : 最低1000-100萬
合作廠商 : 22家遊戲平台商
軟體下載 : 支援APP,IOS、安卓(Android)
富遊娛樂城優缺點評價
優點 缺點
台灣註冊人數NO.1線上賭場
首儲1000贈1000只需一倍流水
擁有體驗金免費體驗賭場
網紅部落客推薦保證出金線上娛樂城
需透過客服申請體驗金
富遊娛樂城評價有哪些網紅推薦
富遊娛樂城擁有多數網紅推薦,知名度是目前數一數二的娛樂城平台,玩家也可無需擔心娛樂城出金問題,有眾多玩家的評價保證,又有娛樂城體驗金可以免費試玩。詳細可觀看富遊娛樂城評價推薦人,數十位網紅評價推薦
富遊娛樂城存取款方式
存款方式 取款方式
提供四大超商(全家、7-11、萊爾富、ok超商)
虛擬貨幣ustd存款
銀行轉帳(各大銀行皆可)
網站內申請提款及可匯款至綁定帳戶
現金1:1出金
富遊娛樂城是否安全?
富遊娛樂城非常注重玩家的安全性。他們使用與銀行相同的《TLS加密技術》來保護玩家的財物,並且持有合法的國際認證執照。官方也承諾確保會員的個人資料安全。各大部落客也實測網站存取款狀況,富遊娛樂城是一個相當安全的線上賭場平台。
如何判斷娛樂城評價是否詐騙?
網站架構及經營方式
金流三方提供取道皆為有公信力三方平台
合理優惠流水洗碼量
畢竟博弈市場不斷開新的線上娛樂城,每一家特色都不同,還不知道如何選擇娛樂城的玩家,透過我們專業分析介紹,建議可以加入富遊娛樂城體驗看看,保證出金、畫面操作簡單、遊戲豐富多元。
選擇一間正確的娛樂城會讓你當作在投資一般,選擇錯誤的娛樂城只會讓你當作在賭博。如果投注個娛樂城遊戲,請前往富遊娛樂城下注
Добрый день!
Полезные советы по безопасной покупке диплома о высшем образовании
gaiassulin.com/диплом-о-среднем-образовании-как-и-где
Всегда вам поможем!.
https://mexicandeliverypharma.com/# buying prescription drugs in mexico
best online pharmacies in mexico: mexico drug stores pharmacies – mexico drug stores pharmacies
mexican rx online: pharmacies in mexico that ship to usa – reputable mexican pharmacies online
золотая коллекция порно http://porn-library.ru .
buying prescription drugs in mexico: mexican pharmaceuticals online – buying from online mexican pharmacy
mexican rx online mexico pharmacies prescription drugs п»їbest mexican online pharmacies
台灣線上娛樂城
富遊娛樂城評價 : 全台唯一5分鐘內快速出金,網紅一致好評看這篇!
富遊娛樂城以玩家需求為核心對於品牌保證安全、公正、真實、順暢,成為玩家在線上賭場最佳合作夥伴,擁有各大網紅、網友評價保證出金。
富遊是台灣註冊人數第一名的線上賭場,富遊是台灣最受歡迎的線上賭場,已吸引超過30萬玩家註冊。首次存款1000元贈1000元獎金,且只需1倍的流水。新手玩家還可獲得免費體驗金,體驗館內的所有遊戲。富遊也時常舉辦不同優惠活動,沒有困難的下注流水要求,相當適合新手與資深玩家遊玩。
富遊娛樂城平台詳情資訊
賭場名稱 : RG富遊
創立時間 : 2019年
博弈執照 : 馬爾他牌照(MGA)認證、英屬維爾京群島(BVI)認證、菲律賓(PAGCOR)監督競猜牌照
遊戲類型 : 真人百家樂、運彩投注、電子老虎機、彩票遊戲、棋牌遊戲、捕魚機遊戲
合作廠商 : 22家遊戲平台商
支付平台 : 各大銀行、四大便利超商
存取速度 : 存款15秒 / 提款3-5分
單筆提款金額 : 最低1000-100萬
合作廠商 : 22家遊戲平台商
軟體下載 : 支援APP,IOS、安卓(Android)
富遊娛樂城優缺點評價
優點 缺點
台灣註冊人數NO.1線上賭場
首儲1000贈1000只需一倍流水
擁有體驗金免費體驗賭場
網紅部落客推薦保證出金線上娛樂城
需透過客服申請體驗金
富遊娛樂城評價有哪些網紅推薦
富遊娛樂城擁有多數網紅推薦,知名度是目前數一數二的娛樂城平台,玩家也可無需擔心娛樂城出金問題,有眾多玩家的評價保證,又有娛樂城體驗金可以免費試玩。詳細可觀看富遊娛樂城評價推薦人,數十位網紅評價推薦
富遊娛樂城存取款方式
存款方式 取款方式
提供四大超商(全家、7-11、萊爾富、ok超商)
虛擬貨幣ustd存款
銀行轉帳(各大銀行皆可)
網站內申請提款及可匯款至綁定帳戶
現金1:1出金
富遊娛樂城是否安全?
富遊娛樂城非常注重玩家的安全性。他們使用與銀行相同的《TLS加密技術》來保護玩家的財物,並且持有合法的國際認證執照。官方也承諾確保會員的個人資料安全。各大部落客也實測網站存取款狀況,富遊娛樂城是一個相當安全的線上賭場平台。
如何判斷娛樂城評價是否詐騙?
網站架構及經營方式
金流三方提供取道皆為有公信力三方平台
合理優惠流水洗碼量
畢竟博弈市場不斷開新的線上娛樂城,每一家特色都不同,還不知道如何選擇娛樂城的玩家,透過我們專業分析介紹,建議可以加入富遊娛樂城體驗看看,保證出金、畫面操作簡單、遊戲豐富多元。
選擇一間正確的娛樂城會讓你當作在投資一般,選擇錯誤的娛樂城只會讓你當作在賭博。如果投注個娛樂城遊戲,請前往富遊娛樂城下注
mexico drug stores pharmacies: mexico pharmacies prescription drugs – buying prescription drugs in mexico online
Надежный аудит для бизнеса в Уфе, для вашей компании.
Не знаете, где пройти аудит в Уфе?, Мы готовы помочь.
Оптимизация бизнеса с помощью аудита, в свете новых технологий.
Мы предоставим вам аудит, связаться с нами.
Экспертный аудит для вашего бизнеса, позаботьтесь о своем бизнесе.
Аудит и консультации в Уфе, долговременные отношения.
Проведение аудита в Уфе, для вашего спокойствия.
Аудит: что необходимо знать?, приходите к нам.
Качественный аудит в Уфе по доступной цене, звоните нам.
Ваш бизнес — наша забота, заботьтесь о своих финансах.
Лицензированные аудиторы в Уфе, проверенные решения.
Аудит для малых и крупных бизнесов, выбирайте качество.
Финансовый аудит для организаций в Уфе, это эффективно.
Независимый аудит для вашего бизнеса, ваш успех — наша цель.
Оптимизация процессов с помощью аудита, рады помочь.
Качественный аудит для гарантии успеха, профессионально и быстро.
Надежные решения для вашего бизнеса, с нами все будет в порядке.
Ваши финансы под контролем, оставайтесь в безопасности.
Аудит как инструмент успеха, мы поделимся опытом.
Выбор аудитора: на что обратить внимание?, мы расскажем все тонкости.
аудит уфа аудит уфа .
Аудит Уфа: профессиональные услуги, для вашего комфорта.
Не знаете, где пройти аудит в Уфе?, Наши специалисты ждут вас.
Аудит финансовых отчетов в Уфе, вам понравится.
Мы предоставим вам аудит, обратитесь к нам.
Экспертный аудит для вашего бизнеса, доступно для всех.
Ваш бизнес с нами под защитой, высокое качество услуг.
Проверка финансов в Уфе, для вашего спокойствия.
Как выбрать аудитора в Уфе?, приходите к нам.
Обеспечьте успех вашего бизнеса с нашим аудитом, заказывайте услуги.
Ваш бизнес — наша забота, заботьтесь о своих финансах.
Гарантированный результат аудита, наша репутация — ваш успех.
Персонализированный подход к аудиту, получите необходимую поддержку.
Финансовый аудит для организаций в Уфе, это безопасно.
Аудит и налоговые проверки в Уфе, ваш успех — наша цель.
Как аудит помогает бизнесу в Уфе?, получите ответ у нас.
Качественный аудит для гарантии успеха, доступно и эффективно.
Надежные решения для вашего бизнеса, мы знаем, что делаем.
Ваши финансы под контролем, оставайтесь в безопасности.
Аудит как инструмент успеха, присоединяйтесь к нам.
Как найти идеального аудитора в Уфе?, мы расскажем все тонкости.
бухгалтер аудит https://auditorbuhgalter.ru/ .
purple pharmacy mexico price list buying from online mexican pharmacy п»їbest mexican online pharmacies
reputable mexican pharmacies online: pharmacies in mexico that ship to usa – medicine in mexico pharmacies
mexico drug stores pharmacies: purple pharmacy mexico price list – buying prescription drugs in mexico online
medication from mexico pharmacy: buying from online mexican pharmacy – mexico pharmacies prescription drugs
https://mexicandeliverypharma.com/# reputable mexican pharmacies online
medication from mexico pharmacy: mexico drug stores pharmacies – medication from mexico pharmacy
mexican border pharmacies shipping to usa mexico pharmacies prescription drugs mexican online pharmacies prescription drugs
I want assembling utile information , this post has got me even more info! .
reputable mexican pharmacies online: mexican drugstore online – best online pharmacies in mexico
pharmacies in mexico that ship to usa: mexican drugstore online – п»їbest mexican online pharmacies
п»їbest mexican online pharmacies: purple pharmacy mexico price list – mexican border pharmacies shipping to usa
mexican pharmacy reputable mexican pharmacies online buying prescription drugs in mexico
http://mexicandeliverypharma.com/# pharmacies in mexico that ship to usa
pharmacies in mexico that ship to usa: medicine in mexico pharmacies – п»їbest mexican online pharmacies
mexico drug stores pharmacies medication from mexico pharmacy medicine in mexico pharmacies
mexican mail order pharmacies: pharmacies in mexico that ship to usa – mexico drug stores pharmacies
medication from mexico pharmacy: best online pharmacies in mexico – mexican rx online
http://mexicandeliverypharma.com/# reputable mexican pharmacies online
п»їbest mexican online pharmacies: buying prescription drugs in mexico – mexican online pharmacies prescription drugs
разработка сайта разработка сайта .
Mavericks rising superstar Luka Doncic https://mavericks-de-dallas.lukadoncic-fr.com continues to amaze the basketball world with his game.
mexican border pharmacies shipping to usa: best online pharmacies in mexico – medicine in mexico pharmacies
pharmacies in mexico that ship to usa: buying from online mexican pharmacy – mexico drug stores pharmacies
Discover Kyrie Irving’s https://mavericks-de-dallas.kyrie-irving-fr.com journey with the Dallas Mavericks, from his early days to forming a power duo with Luka Doncic and competing for a championship.
The story of Michael Phelps https://amerique.michael-phelps.com how he became the greatest swimmer of all time, overcoming adversity, setting records and inspiring the world.
Learn about Jayson Tatum’s https://celtics-de-boston.jayson-tatum.com rise from young rookie to key leader of the Boston Celtics in the NBA, his impact on the team and his success on the court.
The Boston Celtics https://celtics-de-boston.bill-russel.com are one of the most successful teams in the history of the National Basketball Association (NBA).
mexico drug stores pharmacies purple pharmacy mexico price list mexico pharmacy
http://mexicandeliverypharma.com/# mexico pharmacies prescription drugs
mexican pharmaceuticals online mexican pharmacy mexican online pharmacies prescription drugs
mexico drug stores pharmacies: purple pharmacy mexico price list – mexican pharmaceuticals online
mexican online pharmacies prescription drugs: mexican rx online – mexico pharmacies prescription drugs
https://mexicandeliverypharma.online/# buying prescription drugs in mexico online
purple pharmacy mexico price list: purple pharmacy mexico price list – mexican mail order pharmacies
medicine in mexico pharmacies: mexico drug stores pharmacies – mexican drugstore online
Частная платная клиника https://mypsyhealth.ru психиатрии, психологии, психотерапии и наркологии анонимно в Москве.