在C#中,我使用RegexValidator来验证一个只能包含L,l,M,m,D,d值的字段。 我尝试使用[RegexValidator(“[l | L] [M | m] [D | d]”......但这不起作用。 有什么想法吗?
由于
答案 0 :(得分:4)
这个正则表达式:
[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]
表示一个且仅一个且不少于一个字符a
,s
,d
或f
。
[asdf]*
表示任意数量的字符,但必须为a
,s
,d
或f
。
[asdf]+
表示至少有一个字符,且必须为a
,s
,d
或f
。
Regexp不会在|
方括号字符定义约束中使用[]
字符作为OR运算符。
[A-Z][a-z]+[0-9]
表示必须具有第一个字符大写字母的字符串(A到Z之间的任何大写字符),后跟至少一个小写字母(a
到{{1}之间的任何小写字母})并以十进制数字结束。
z
表示字符串必须有3个字符
第一个字符必须是[l|L][M|m][D|d]
,l
或|
第二个字符必须是L
,M
或|
第三个字符必须是m
,D
或|
。
d
可能是您想要使用的
[lL][Mm][Dd]
表示至少有一个字符串的字符串被限制为[lLMmDd]+
,l
,L
,M
,m
或{{1 }}。
D
表示至少包含3个字符的字符串,其中所有字符都被约束为d
,[lLMmDd][lLMmDd][lLMmDd]+
,l
,L
,{{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();
}