簡體   English   中英

正則表達式,字符串是白名單字符的組合,不包含任何黑名單

[英]Regex, string is a combination of whitelisted characters and doesn't contain any in blacklist

1)如何正則表達式驗證用戶輸入是否包含A組中的任何字符組合,以及不包含來自另一組D的任何字符?
2)同時檢查字符串長度是否在2到255之間

換句話說,對於所有字符串字符:A AND NOT D.

我從服務器收到兩組字符(白名單和黑名單),需要根據這些字符驗證用戶輸入。 我不能影響設計,必須忍受它。 由於其他設計限制,我也必須使用正則表達式。


這是我到目前為止所做的事情(根本不工作):

/^(?![23]+)[0-9]{2,255}$/

為簡單起見, 23將是黑名單
為簡單起見, 0-9將是字符的白名單

一些例子:

3014567890 - >失敗,3存在
0145678902 - >失敗,2存在
0123456789 - >失敗,2和3存在
014567890 - >好的
88774411489 - >好的
5 - >失敗,沒有足夠的人物
1abc - >失敗,abc非法chars
ab1c - >失敗,abc非法的chars
abc1 - >失敗,abc非法的字符


謝謝!

你幾乎就在那里,先行斷言需要一些工作:

/^(?!.*[23])[0-9]{2,255}$/

這樣,負向前瞻中的正則表達式匹配,如果字符串中有(至少)一個23 (即,在任意數量的字符( .* )之后),導致斷言失敗。

在這個(顯然)簡化的例子中,你當然可以使用/^[014-9]{2,255}$/

暫無
暫無

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

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