人物的正则表达式

时间:2010-02-14 09:51:14

标签: c# regex

在C#中,我使用RegexValidator来验证一个只能包含L,l,M,m,D,d值的字段。 我尝试使用[RegexValidator(“[l | L] [M | m] [D | d]”......但这不起作用。 有什么想法吗?

由于

5 个答案:

答案 0 :(得分:4)

这个正则表达式:

[l|L][M|m][D|d]

表示:

  • l,|或L;然后
  • M,|或m;然后
  • D,|或者d。

尝试:

^[LMD]+$

作为不区分大小写的匹配,如果您可以这样做或:

^[LlMmDd]+$

如果你不能。

这两个都要求整个字符串匹配L,l,M,m,D或d字符序列。如果+不能为空,则使用*表示一个或多个;如果允许为空,则^[LlMmDd]$ 表示0或更高。

编辑:根据更新的信息,如果您想允许其中一个字符,那么只有其中一个:

{{1}}

答案 1 :(得分:1)

你也可以使用反转。检查字段中是否有您定义列表中的字符。

/[^LlMmDd]+/

答案 2 :(得分:0)

如果我理解正确,那么你可以尝试这样的事情

var s1 = "Ll";
var s2 = "m";
var s3 = "LmD";
var pattern = "^[LMD]$";

Console.WriteLine( Regex.IsMatch(s1, pattern, RegexOptions.IgnoreCase) );
Console.WriteLine( Regex.IsMatch(s2, pattern, RegexOptions.IgnoreCase) );
Console.WriteLine( Regex.IsMatch(s3, pattern, RegexOptions.IgnoreCase) );

将以下内容写入控制台

  


  真
  错误

你只能在字符串上使用正则表达式,但你总是可以转换你的字符

char c = 'd';
Console.WriteLine( Regex.IsMatch(new String(c,1), pattern, RegexOptions.IgnoreCase));

答案 3 :(得分:0)

你需要阅读正则表达式。你应该可以在regexp的教程上使用Google(或Bing)。

[asdf]表示一个且仅一个且不少于一个字符asdf
[asdf]*表示任意数量的字符,但必须为asdf
[asdf]+表示至少有一个字符,且必须为asdf

Regexp不会在|方括号字符定义约束中使用[]字符作为OR运算符。

[A-Z][a-z]+[0-9]表示必须具有第一个字符大写字母的字符串(A到Z之间的任何大写字符),后跟至少一个小写字母(a到{{1}之间的任何小写字母})并以十进制数字结束。

z表示字符串必须有3个字符 第一个字符必须是[l|L][M|m][D|d]l| 第二个字符必须是LM| 第三个字符必须是mD|

d可能是您想要使用的 [lL][Mm][Dd]表示至少有一个字符串的字符串被限制为[lLMmDd]+lLMm或{{1 }}。
D表示至少包含3个字符的字符串,其中所有字符都被约束为d[lLMmDd][lLMmDd][lLMmDd]+lL,{{1} }或M

答案 4 :(得分:0)

此代码应从控制台读取一个字符串,并与之匹配。它应该只接受1个字符,并与您提供的字符匹配。

     static void Main(string[] args)
    {
        Regex regex = new Regex(@"^[L|M|D]$", RegexOptions.IgnoreCase);
        System.Console.WriteLine("Enter Text");
        String str = System.Console.ReadLine();
        Match match = regex.Match(str);

        if (match.Success == true)
        {
            System.Console.WriteLine("Success");
        }
        else
        {
            System.Console.WriteLine("Fail");
        }
        System.Console.ReadLine();
    }
相关问题