摘要:項目案例項目中遇到一項任務禁止文件名含有中文字符空格等非法字符的文件,在持續整合中進行排查。因此更嚴謹的方法就是采用白名單實現,我們判斷字符串是不是我們想要的,實現如下我們要求必須只能還有英文數字這些字符包含非法字符這樣就萬無一失了。
項目案例
項目中遇到一項任務:禁止文件名含有中文字符、空格等非法字符的文件,在circleci持續整合中進行排查。
那思路很簡單呢,用中文字符正則表達式去檢查項目下文件路徑就好了不是嗎?
那這樣我們寫出的代碼是:
const str = "我有中文字符"; if(/.*[u4e00-u9fa5]+.*$/.test(str)){ throw new Error("不能含有漢字"); }黑名單和白名單
什么是黑白名單?針對本文案例,黑名單當然就是含中文字符、空格這些非法字符的字符串,而白名單就是我想要的,只包含英文、數字、下劃線、英文句點等字符的字符串。
那上面的思路就是基于黑名單的實現咯。
但是,我們仔細審查一下,會發現基于黑名單的排查,是極易出現紕漏的,以上方法就不能識別中文全角的括"("和")"。
因此更嚴謹的方法就是采用白名單實現,我們判斷字符串是不是我們想要的,實現如下:
//我們要求必須只能還有英文、數字、_、.、/、+、-、@、&這些字符 const regex = /^[A-Z0-9a-z()~_./+-@&]*$/; if (!regex.test(path)) { throw new Error("包含非法字符"); }
這樣就萬無一失了。
思考這種黑白名單的實現不僅能用在本文案例中,比如我們設計一個隨機算法,但是該隨機算法中需要把一些特殊情況排除掉的時候,我們的直接思維方式就是排除這些情況,那么能不能反過來直接從生成的角度,不生成這些情況了。
這樣我們的代碼就會變得健壯。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/99261.html
先對項目進行一下簡單的介紹 vue開發微信商城項目總結之一–項目介紹 項目開發初期,由于項目比較著急上線,前端的框架在選型上比較倉促,只是因為vue學習成本較低,就選了它,沒有什么別的原因, 之前看過angular2一段時間,又趁著周末看了兩天vue,就倉促開發,所以埋下了很多坑,項目(項目目前沒有對游客開放,是2B2C的模式)上線后,回頭填坑,發現了很多問題,因為之前一直是基于Jquery模式的...
摘要:關于降低鎖的競爭程度從奶爸的角度思考題外話這篇文章的靈感來源于近日帶娃耍。具體可參考定律,大致可理解為處理器的利用率與處理器數量和串行比例成反比,此外,在鎖上發生競爭,導致上下文切換的開銷增加,進而降低程序的性能。 關于降低鎖的競爭程度------從奶爸的角度思考 題外話:這篇文章的靈感來源于近日帶娃耍。 鎖競爭帶來的問題 在鎖上發生競爭,導致串行操作花費的時間比例增加,進而降低程序...
摘要:關于的思考是一種前端狀態管理架構思想,專門解決軟件的結構問題。他們給出了一些庫用于實現的思想,并在的基礎上做了一些改進。在這些框架里,當前最熱門的莫過于和了。 關于Flux,Vuex,Redux的思考 Flux是一種前端狀態管理架構思想,專門解決軟件的結構問題?;贔lux的設計思想,出現了一批前端狀態管理框架。他們給出了一些庫用于實現Flux的思想,并在Flux的基礎上做了一些改進。...
閱讀 1751·2021-09-27 14:02
閱讀 3100·2021-09-27 13:36
閱讀 1046·2019-08-30 12:46
閱讀 1834·2019-08-30 10:51
閱讀 3571·2019-08-29 17:02
閱讀 941·2019-08-29 16:38
閱讀 1846·2019-08-29 16:37
閱讀 3004·2019-08-26 10:32