Skip to main content
 首页 » 编程设计

c#之等号的正则表达式问题

2024年01月21日28jiqing9006

在C#中,我试图验证一个类似于以下内容的字符串:

I@paramname='test'

要么

O@paramname=2827

这是我的代码:

 string t1 = "I@parameter='test'"; 
 
 string r = @"^([Ii]|[Oo])@\w=\w"; 
 
 var re = new Regex(r); 


如果我将“ = \ w”从结尾或变量r中删除,则得到True。如果我在\ w之后添加“ = \ w”,则为False。我希望@和=之间的字符可以是任何字母数字值。 =号之后的任何内容都可以包含字母数字和'(单引号)。我在这里做错了。我很少使用正则表达式,并且通常可以找到示例,尽管这是自定义格式,但即使是备忘单,我也遇到了问题。

请您参考如下方法:

^([Ii]|[Oo])@\w+=(?<q>'?)[\w\d]+\k<q>$ 


正则表达式:

^               start of line 
 ([Ii]|[Oo])    either (I or i) or (O or o) 
 \w+            1 or more word characters 
   =            equals sign 
   (?<q>'?)     capture 0 or 1 quotes in named group q 
   [\w\d]+      1 or more word or digit characters 
   \k<q>        repeat of what was captured in named group q 
$               end of line