簡體   English   中英

匹配特殊字符的正則表達式簡寫

[英]Regex shorthand for matching special characters

我正在為 web 應用程序的后端構建一個密碼驗證器,我正在使用非常標准的大寫、小寫、數字、最小長度和特殊字符要求,我希望重構一下正則表達式,所以它是更緊湊。 有沒有辦法搜索任何特殊字符的匹配項,而無需編寫每個特殊字符的相當長的正則表達式?

r'^(?=.*[\d])(?=.*[A-Z])(?=.*[a-z])(?=.*[special chars regex])[\w\d special chars regex]{8,255}$'

到目前為止,我的嘗試一直圍繞着擁有像 \\S 這樣的否定集的想法,它可以匹配它們,但由於它們也匹配數字,因此它仍然允許使用沒有特殊字符的密碼。

編輯:我對特殊字符的意思可以概括為,我想捕捉 ASCII 索引在 33 到 126 之間的字符,不包括字母和數字(數字索引 48 ~ 57,大寫字母索引 65 ~ 90,大寫字母索引 97 ~ 122小寫字母),因為它們確實是預先存在的正則表達式短手的一部分,例如\\w\\d

這是一個ASCII 圖表供參考。

[^\\w\\s\\d]將匹配不是單詞字符(小寫或大寫)、數字或空白字符的單個字符。

這意味着理論上你會使用[\\w\\d[^\\w\\d\\s]]來表示密碼可以組成的所有字符,但由於該聯合似乎不想正確解析,您可以明確指定 Unicode 范圍(盡管是十六進制,而不是十進制):

(?=.*[\d])(?=.*[A-Z])(?=.*[a-z])(?=.*[^\w\d\s])[\u0021-\u007E]{8,255}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM