国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

關于“判斷字符串是否含有非法字符”的思考

stefanieliang / 3368人閱讀

摘要:項目案例項目中遇到一項任務禁止文件名含有中文字符空格等非法字符的文件,在持續整合中進行排查。因此更嚴謹的方法就是采用白名單實現,我們判斷字符串是不是我們想要的,實現如下我們要求必須只能還有英文數字這些字符包含非法字符這樣就萬無一失了。

項目案例

項目中遇到一項任務:禁止文件名含有中文字符、空格等非法字符的文件,在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

相關文章

  • 關于遞歸思考

    摘要:之前有接觸過遞歸,看到別人寫的遞歸函數的代碼,好生羨慕,怎么就能寫這么好呢我怎么就想不到這樣寫呢如此等等。 之前有接觸過遞歸,看到別人寫的遞歸函數的代碼,好生羨慕,怎么就能寫這么好呢?我怎么就想不到這樣寫呢?如此等等。 就拿fibonacci函數來說吧,一個普通的函數可能這樣寫: def fib(n): if n == 0: return 0 elif ...

    lyning 評論0 收藏0
  • 關于箭頭函數思考

    摘要:關于箭頭函數的思考自從有了箭頭函數這個靈活的功能,現在寫函數都習慣寫成箭頭函數格式然而如果不理解箭頭函數的原理,濫用它也會造成很大的影響。等同于等同于如果箭頭函數的代碼塊部分多于一條語句,就要使用大括號將它們括起來,并且使用語句返回。 關于箭頭函數的思考 自從有了ES6箭頭函數這個靈活的功能,現在寫函數都習慣寫成箭頭函數格式 () => {} 然而如果不理解箭頭函數的原理,濫用它也會造...

    ytwman 評論0 收藏0
  • vue開發微信商城項目總結之六--關于vuex思考

    先對項目進行一下簡單的介紹 vue開發微信商城項目總結之一–項目介紹 項目開發初期,由于項目比較著急上線,前端的框架在選型上比較倉促,只是因為vue學習成本較低,就選了它,沒有什么別的原因, 之前看過angular2一段時間,又趁著周末看了兩天vue,就倉促開發,所以埋下了很多坑,項目(項目目前沒有對游客開放,是2B2C的模式)上線后,回頭填坑,發現了很多問題,因為之前一直是基于Jquery模式的...

    PrototypeZ 評論0 收藏0
  • 關于降低鎖競爭程度------從奶爸角度思考

    摘要:關于降低鎖的競爭程度從奶爸的角度思考題外話這篇文章的靈感來源于近日帶娃耍。具體可參考定律,大致可理解為處理器的利用率與處理器數量和串行比例成反比,此外,在鎖上發生競爭,導致上下文切換的開銷增加,進而降低程序的性能。 關于降低鎖的競爭程度------從奶爸的角度思考 題外話:這篇文章的靈感來源于近日帶娃耍。 鎖競爭帶來的問題 在鎖上發生競爭,導致串行操作花費的時間比例增加,進而降低程序...

    YacaToy 評論0 收藏0
  • 關于Flux,Vuex,Redux思考

    摘要:關于的思考是一種前端狀態管理架構思想,專門解決軟件的結構問題。他們給出了一些庫用于實現的思想,并在的基礎上做了一些改進。在這些框架里,當前最熱門的莫過于和了。 關于Flux,Vuex,Redux的思考 Flux是一種前端狀態管理架構思想,專門解決軟件的結構問題?;贔lux的設計思想,出現了一批前端狀態管理框架。他們給出了一些庫用于實現Flux的思想,并在Flux的基礎上做了一些改進。...

    jsbintask 評論0 收藏0

發表評論

0條評論

stefanieliang

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<