C#Regex只允许使用字母数字
本文关键字:数字 许使用 C#Regex | 更新日期: 2023-09-27 18:14:31
我有下面的正则表达式^[a-zA-Z0-9]+$
,它允许使用字母数字字符。这里的问题是,如果我只输入像"897687"这样的数字字符,那么正则表达式仍然匹配。我不希望发生这种事。应该至少有一个文本字符,并且应该以文本字符开头。例如"a343"或"a98bder"或"a4544fgf343">
如果你能帮我改进我的正则表达式,那就太好了。
听起来像你想要的:
^[a-zA-Z][a-zA-Z0-9]*$
解释
^在线路开始时断言位置
匹配下面列表中的单个字符[a-zA-Z]
»a-z在a(索引97(和z(索引122(之间的单个字符(区分大小写(
»A-Z在A(索引65(和Z(索引90(之间的单个字符(区分大小写(
匹配下面列表中的单个字符[a-zA-Z0-9]*
*量化器--在零次和无限次之间匹配,尽可能多次,根据需要反馈(贪婪(
a-z在a(索引97(和z(索引122((区分大小写(之间范围内的单个字符
A-Z在A(索引65(和Z(索引90((区分大小写(之间的单个字符
0-9介于0(索引48(和9(索引57(之间的单个字符(区分大小写(
$在一行的末尾断言头寸
演示
为了防止ASCII字符在某些时候不够,这里有Unicode版本:
^'p{L}['p{L}'p{N}]*$
'p{L}
是具有属性letter的任何Unicode代码点===来自任何语言(即Unicode(的任何字母
'p{N}
是任何具有属性number的Unicode代码点==>任何语言(即Unicode(的任何数字字符
此函数将根据正则表达式是否匹配返回true或false,
public static Boolean isAlphaNumeric(string strToCheck)
{
Regex rg = new Regex(@"^[a-zA-Z0-9's,]*$");
return rg.IsMatch(strToCheck);
}
^[a-zA-Z][a-zA-Z0-9]*$
应该这么做!
或者,如果您希望包括所有字母数字加下划线,您可以使用:
^[a-zA-Z]['w]*$
或者比公认的答案略不详细:
^[a-zA-Z]['w]*$
C#正则表达式具有字母数字字符的字符类指示符"''w",但没有仅用于字母(无数字(的字符类,因此必须手动指定类集[a-zA-Z]。
这是检查字母数字、的最佳解决方案
- 如果它只是字符串-"错误">
- 如果它只是整数-"错误">
-
如果是字母数字-"成功"。
if (System.Text.RegularExpressions.Regex.IsMatch(txt.Text, @"[a-zA-Z]") && System.Text.RegularExpressions.Regex.IsMatch(txt.Text, @"[0-9]") { // Success - It is alphanumric } else { // Error - It is not alphanumric }