You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# Regex禁止空格验证报错:RegexParseException无效模式排查

问题解决:正则表达式无效模式错误

你的noSpaces正则表达式语法写错了,导致解析失败。负向先行断言的正确语法是(?!pattern),你漏了开头的左括号,所以?!.* 是非法的正则模式。

修正后的代码

var noSpaces = new Regex(@"(?!.* )");
var hasNum = new Regex(@"[0-9]+");
var isValid = noSpaces.IsMatch(input) && hasNum.IsMatch(input);

语法解释

  • (?!.* ):这是负向先行断言,作用是检查字符串中不存在"任意字符(包括0个)+空格"的组合,也就是确保密码里没有任何空格。
  • [0-9]+:匹配至少一个数字,保证密码包含数字。

额外优化建议

如果只是单次匹配,用Regex.IsMatch静态方法更高效,不用实例化Regex对象:

var noSpaces = Regex.IsMatch(input, @"(?!.* )");
var hasNum = Regex.IsMatch(input, @"[0-9]+");
var isValid = noSpaces && hasNum;

也可以把两个规则合并成一个正则,减少匹配次数:

var isValid = Regex.IsMatch(input, @"^(?=.*[0-9])(?!.* ).+$");

这个合并后的正则解释:

  • ^:匹配字符串开头
  • (?=.*[0-9]):正向先行断言,确保包含至少一个数字
  • (?!.* ):负向先行断言,确保没有空格
  • .+$:匹配至少一个任意字符(保证密码非空)

内容的提问来源于stack exchange,提问作者elizac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:45:35