簡體   English   中英

正則表達式匹配不完全匹配的字符串或模式的字符串

[英]Regex to match string either not exact string or pattern

我正在嘗試與此正則表達式匹配模式

"^[a-zA-Z]{1}[a-zA-Z0-9\\s_]*(?<![Ii][Dd]|[Cc][Rr][Ee][Aa][Tt][Ee][Dd][Dd][Aa][Tt][Ee]|[Cc][Rr][Ee][Aa][Tt][Ee][Dd][Bb][Yy]|[Mm][Oo][Dd][Ii][Ff][Ii][Ee][Dd][Dd][Aa][Tt][Ee]|[Mm][Oo][Dd][Ii][Ff][Ii][Ee][Dd][Bb][Yy]|[Oo][Rr][Gg][Ii][Dd])$"

此模式應匹配任何不以數字開頭或除空格,下划線,字符和數字以外的其他任何字符串,並且如果字符串恰好是IDCreatedDateCreatedByCreatedByModifiedDateModifiedByOrgID ,則該模式也應失敗。 還應檢查是否檢查了靜態字符串,不區分大小寫。

  • 通過-“ Bob9湯姆”
  • 失敗-“ 9Bob Tom”
  • 失敗-“ ID”
  • 通過-“湯姆湯姆”
  • 通過-“湯姆ID”
  • 通過-“ IDTom”
  • 通過-“ TomID”

您需要在開頭添加一個負前瞻,以檢查其中是否包含所提及的確切字符串。 (?i)稱為不區分大小寫的修飾符,它強制正則表達式引擎進行不區分大小寫的匹配。

@"(?i)^(?!(?:ID|CreatedDate|CreatedBy|ModifiedDate|ModifiedBy|OrgID)$)[a-zA-Z][a-zA-Z0-9\s_]*"

演示

此模式應匹配任何字符串

  • 不以數字開頭

     ^\\D 
  • 或除空格,下划線,字符和數字以外的其他內容

     ^\\D[ _a-zA-Z0-9]*$ 
  • 如果字符串恰好是IDCreatedDateCreatedByModifiedDateModifiedByOrgID ,則它也將失敗。

     ^(?!(?:CreatedDate|CreatedBy|ModifiedDate|ModifiedBy|OrgID)$)\\D[ _a-zA-Z0-9]*$ 
  • 還應檢查是否檢查了靜態字符串,不區分大小寫。

     ^(?!(?:(?i)CreatedDate|CreatedBy|ModifiedDate|ModifiedBy|OrgID)$)\\D[ _a-zA-Z0-9]*$ 

筆記

  • 可以通過使整個正則表達式不區分大小寫來代替最后一步。
  • ^\\D 字面意思是“不應以數字開頭”。 如果您的意思是“ ...但起始字符仍應為[ _a-zA-Z0-9] ”,則^\\D必須更改為^[a-zA-Z]
  • 如果切換整個表達式不區分大小寫的(我不明白為什么你不會),youc可以代替所有a-zA-Zaz

暫無
暫無

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

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