NET。我创建了一个正则表达式验证器来检查特殊字符意味着我不想要用户名中的任何特殊字符。以下是代码
Regex objAlphaPattern = new Regex(@"[a-zA-Z0-9_@.-]");
bool sts = objAlphaPattern.IsMatch(username);
如果我提供的用户名为$%^& asghf,那么验证器会提供无效的数据格式,这是我想要的结果但是如果我提供数据s23 _ @ .- ^& () %^ $#然后我的验证器应该阻止数据,但我的验证器允许错误的数据
所以如何不允许任何特殊字符,除了a-z A-A 0-9 _ @ .-
由于 Sunil Kumar Sahoo
答案 0 :(得分:14)
你的表情有些不对劲。首先,在表达式的开头和结尾处没有起始字符串^
和结束字符串$
,这意味着它只需要在字符串中的某处找到匹配项。
其次,你目前只寻找一个角色。要强制匹配您需要使用的所有字符*
以下是它应该是:
Regex objAlphaPattern = new Regex(@"^[a-zA-Z0-9_@.-]*$");
bool sts = objAlphaPattern.IsMatch(username);
答案 1 :(得分:1)
只有当给定的字符串包含任何“非特殊”字符时,您的模式才会进行检查;它不排除不需要的字符。你想改变两件事;让它检查整个字符串是否只包含允许的字符,并检查多个字符:
^[a-zA-Z0-9_@.-]+$
在模式之前添加^
,使其在字符串的开头匹配。在+$
之后添加+
以确保字符串中至少有一个字符,并$
以确保字符串与结尾匹配。
答案 2 :(得分:0)
将正则表达式更改为^[a-zA-Z0-9_@.-]+$
。这里^
表示字符串的开头,$
是字符串的结尾。