簡體   English   中英

具有正則表達式的FluentValidation不允許N / A或NA忽略大小寫和空格

[英]FluentValidation with Regular Expression not allowing N/A or NA Ignoring Case and White Space

我在ASP.NET MVC應用程序中使用FluentValidation ,對於某些字段,不允許用戶輸入N/A及其變體。

我發現蒂姆在SO問題中的答案有所幫助,但並非完全符合我的需求。 它確實可以工作,但是我不想使用RegexOptions.IgnoreCase作為使用這樣的選項進行的驗證似乎只發生在服務器端。

RuleFor(x => x.Question01)
    .Matches(@"^(?!\s*n\s*/?\s*a\s*$).*", RegexOptions.IgnoreCase)
    .WithMessage("Invalid answer.");

我正在尋找一個純正則表達式解決方案(不使用RegexOptions.IgnoreCase ),忽略大小寫和空格以允許除N/AN / ANANAn/an / anana等之外的任何內容。

如果你想精確匹配的值,不允許有大小寫混合的組合,你可以使用它們全部列出交替

請注意\\s也與換行符匹配。

如果要允許除此模式以外的所有模式,則可以使用負前瞻(?!來斷言右側不是此模式,並且可以使用內聯修飾符(?i)(?i:

^(?!(?i:n */? *a)$).+$
  • ^字符串開頭
  • (?!負向前進,斷言右邊的不是
    • (?i:區分大小寫匹配的內聯修飾符
    • n */? *a n */? *a匹配項n ,可選/包含可選空格
    • )$關閉內聯修飾符並斷言字符串的結尾
  • )提前關閉
  • .+匹配任何字符1+次
  • $字符串結尾

.NET正則表達式演示

如果這也適用於Javascript,則可以使用字符類,因為不支持內聯修飾符。

^(?!(?:[nN] *\/? *[aA])$).+$

正則表達式演示

此正則表達式將匹配N / A,n / a,NA,na上的任何變體

忽略N-> A和N-> /和/-/> A之間的所有空格

\\ S *

對於不敏感的情況

?一世:

最終結果:

^(?i:n\s*/?\s*a)$

此解決方案確實有效:

RuleFor(x => x.Question01)
    .Matches(@"^(?!\s*[Nn]\s*/?\s*[Aa]\s*$).*")
    .WithMessage("Invalid answer.");

暫無
暫無

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

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