C#中Regex.IsMatch验证无空格正则表达式失效问题求助
哦,这个坑我之前也踩过!问题出在你写正则的方式上——C#的Regex类不认那些前后的斜杠分隔符~
为啥会返回false?
你用的@"/^\S*$/"是JavaScript这类语言里的正则字面量写法,那些前后的/是用来标记正则表达式范围的分隔符。但在C#里,这些斜杠会被当成正则表达式的一部分去匹配目标字符串,而你的测试字符串"Abcd"里根本没有斜杠,所以IsMatch自然返回false了。
正确的写法
直接去掉前后的斜杠,只保留纯正则模式就行:
// 验证无空格的字符串,返回true bool validUsername = Regex.IsMatch("Abcd", @"^\S*$"); // 验证含空格的字符串,返回false,符合你的需求 bool invalidUsername = Regex.IsMatch("Ab cd", @"^\S*$");
额外优化(可选)
如果你的需求是用户名/密码不能为空,且不能有空格,可以把正则里的*(匹配0次或多次)改成+(匹配1次或多次),这样空字符串也会被判定为无效:
// 空字符串会返回false,非空无空格返回true bool validNonEmpty = Regex.IsMatch("", @"^\S+$"); // false
内容的提问来源于stack exchange,提问作者Behnam Rasooli
相关产品推荐
相关产品推荐

