繁体   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