Skip to main content
 首页 » 编程设计

c#之如何使用正则表达式强制执行单行

2024年02月06日26zhujiabin

我需要一个 Regex将拒绝跨多行传播的任何字符串的对象。

我希望它成功:

"This is my string" 

这失败了:

"This is my string" + Environment.NewLine + "that spreads acrosss" + Environment.NewLine + "multiple lines." 

我一直在阅读 documentation on MSDN并假设以下应该有效:

  • 正则表达式模式:"^.+"
  • Regex 对象使用此模式初始化,没有任何选项(没有 RegexOptions.Singleline 或 RegexOptions.Multiline)。

使用多行字符串进行测试时,Regex.IsMatch 方法始终返回 true。 我相信这是因为 IsMatch 将在至少有一部分字符串与模式匹配时返回 true。

在我的例子中,新行之前的任何内容都会导致匹配。失败的唯一方法是字符串只有换行符而没有其他字符。

是否有Regex 验证方法将字符串视为一个整体,而不是将其拆分为匹配的子字符串?我怀疑我可能需要更复杂的字符串模式来实现我的目标。

请您参考如下方法:

您可以使用此正则表达式来匹配单行:

^[^\r\n]+$ 

并且您不需要对这个正则表达式使用 RegexOptions.Multiline。