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