如何使用正则表达式检查特殊字符

净。 我创建了一个正则表达式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_@.-]+$ 。 这里^表示字符串的开头, $表示字符串的结尾。