【问题标题】:How to enforce a single line using Regex?如何使用正则表达式强制执行单行?
【发布时间】:2014-11-19 16:10:29
【问题描述】:

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

【问题讨论】:

    标签: c# regex string multiline


    【解决方案1】:

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

    ^[^\r\n]+$
    

    你不需要在这个正则表达式中使用RegexOptions.Multiline。

    【讨论】:

    • 感谢阿努巴瓦。它按预期工作。我希望可以将“全部接受”模式与 RegexOptions 结合使用来驱动 Multiline 或 Singleline 标准。我被名字误导了。
    猜你喜欢
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多