C# 正则表达式仅允许.net中的某些字符
我只是在做一些验证工作,但在这个问题上遇到了麻烦:(我想要一个只包含[a-z][a-z][0-9][uz]的文本。) 它应以任何顺序多次接受上述任何字符。所有其他字符将文本标记为无效。C# 正则表达式仅允许.net中的某些字符,c#,.net,regex,C#,.net,Regex,我只是在做一些验证工作,但在这个问题上遇到了麻烦:(我想要一个只包含[a-z][a-z][0-9][uz]的文本。) 它应以任何顺序多次接受上述任何字符。所有其他字符将文本标记为无效。 我试过了,但没用 { ...... Regex strPattern = new Regex("[0-9]*[A-Z]*[a-z]*[_]*"); if (!strPattern.IsMatch(val)) { ret
我试过了,但没用
{
......
Regex strPattern = new Regex("[0-9]*[A-Z]*[a-z]*[_]*");
if (!strPattern.IsMatch(val))
{
return false;
}
return true
}
试试这个:
new Regex("[0-9A-Za-z_]*");
你想要这个:
Regex strPattern = new Regex("^[0-9A-Za-z_]*$");
您的表达式不起作用,因为:
- 它将接受任意数量的数字,后跟任意数量的大写字母,后跟任意数量的小写字母,后跟任意数量的下划线。例如,下划线后跟数字将不匹配
- 您的模式没有使用
和^
字符锚定。这意味着每个字符串都将匹配,因为每个字符串都包含零个或多个指定字符(例如,字符串“!@#$”包含零个数字,等等!)将表达式锚定到字符串的开头和结尾意味着整个字符串与整个表达式非常匹配,否则匹配将失败$
- 此模式仍将接受长度为零的字符串作为有效字符串。如果要强制该字符串至少为一个字符,请将表达式末尾附近的
更改为*
(+
表示“0个或多个上一个标记”,而*
表示“1个或多个上一个标记”。)+
^\w*$
将验证字母数字和下划线的字符串。嘿,伙计们,我想要一个模式,该模式必须是完全数字的,或者以一个字母开头,然后后跟数字。此外,字母必须是以下之一:c、f、t、p、I或n。我知道有其他方法来验证这一点,但我不知道“我认为正则表达式是一种优雅的方式:)仅供参考,此模式将匹配每个字符串。换句话说,regex.IsMatch()
不会使用此模式返回false的字符串。