簡體   English   中英

正則表達式超前邏輯“ OR”-排除某些模式

[英]Regex lookahead logical 'OR' - to exclude certain patterns

我已經看到了很多密碼驗證示例,它們執行邏輯與。 例如,密碼必須具有

  • 至少一位數字(AND)
  • 至少一個字符(與)
  • 長度介於6到15之間

可以使用正則表達式“正向提前”編寫為:

var includePattern = @"^(?=.*\d)(?=.*[a-zA-z]).{6,15}$"; 
bool tfMatch = Regex.IsMatch("Password1", includePattern); //
if (tfMatch)
    //continue... valid thus far...

我的問題是,我想排除某些組或模式,實質上是進行邏輯“或”運算。 例如,假設我要匹配(以便在以下任一情況為真時使密碼無效):

  • 至少找到一個(或)空間
  • 至少找到一個單引號(OR)
  • 至少找到一個雙引號(OR)
  • 野獸的字符串“ 666”

在excludePattern上尋求幫助。 否定的前瞻性?

var excludePattern = @"^( ...xxx...  $"; //<== **** what goes in here??
bool tfMatch = Regex.IsMatch("Pass 666 word", excludePattern); //
if (tfMatch)
    //DONT continue... contains excluded

我正在使用C#正則表達式,但是任何口味都可以開始。

就像您可以使用多個正向前行檢查字符串是否滿足多個正向模式一樣,您可以在負向前行備用行中交替顯示以檢查該字符串中是否沒有匹配的前向行行。 例如,對於您

至少找到一個(或)空間

至少找到一個單引號(OR)

至少找到一個雙引號(OR)

野獸的字符串“ 666”

您可以使用

^(?!.* |.*'|.*"|.*666)<rest of your pattern>

https://regex101.com/r/u9BoIl/1

暫無
暫無

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

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