2015-02-08 25 views
0

我試圖用這個正則表達式匹配的模式正則表達式匹配字符串,要麼是不準確的字符串或模式

"^[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])$" 

這種模式應該與不以數字開頭或者有別的比其他任何字符串空格,下劃線,字符和數字以及如果字符串恰好爲IDCreatedDateCreatedByModifiedDateModifiedByOrgID也應該失敗。它還應檢查是否檢查了靜態字符串,而不區分大小寫。

  • 通行證 - 「Bob9湯姆」
  • 失敗 - 「9Bob湯姆」
  • 失敗 - 「ID」
  • 通行證 - 「嗵嗵」
  • 通行證 - 「湯姆ID」
  • 傳 - 「IDTom」
  • 通行證 - 「TomID」
+0

以空格或下劃線開頭的值是否有效? – JohnLBevan 2015-02-08 15:27:05

+0

不,這是無效的。我有問題要更新。請驗證它。 – 2015-02-08 15:34:00

回答

2

您需要添加一個負在開始時往前看,以檢查不包含提及的確切字符串的字符串。 (?i)稱爲不區分大小寫修飾符,它強制正則表達式引擎執行不區分大小寫的匹配。

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

DEMO

+0

謝謝。我做了這個負面的背後。幾乎和你的相似。但爲了使靜態字符串不區分大小寫,我必須爲每個字符串包含所有可能的情況。我已經更新了我的問題。只是指導我是否正確或錯誤。如果還有其他更好的方法,請告訴我。 – 2015-02-08 15:48:38

+0

增加'(?i)'做一個不區分大小寫的匹配。 – 2015-02-08 15:49:24

1

這種模式應匹配任何字符串

  • 不以數字

    ^\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-z替換所有a-zA-Z
相關問題