如何使用Regex强制执行单行?

时间:2014-11-19 16:10:29

标签: c# regex string multiline

我需要一个Regex对象来拒绝任何遍布多行的字符串。

我希望这成功:

"This is my string"

这就失败了:

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

我一直在阅读documentation on MSDN并认为以下内容应该有效:

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

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

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

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

1 个答案:

答案 0 :(得分:4)

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

^[^\r\n]+$

您无需在此正则表达式中使用RegexOptions.Multiline