【问题标题】:regex expression to accept ENTER key in string [duplicate]正则表达式接受字符串中的 ENTER 键[重复]
【发布时间】:2016-07-11 23:04:10
【问题描述】:

问题


我在创建正则表达式以接受任何字符串和 ENTER 键时遇到问题,目前我有这个:

^$|^.+$

我环顾四周,有人说要添加\n,但这不起作用。

应该允许的字符串示例如下:

Hello this is a test string


and i want this to be accepted

【问题讨论】:

  • 看来你需要(?s)^.*$。但是,这个匹配所有内容的正则表达式有什么好处,包括。空的,字符串?能否请您详细说明一下要求?
  • \n 不是“回车键”,而是换行
  • 为什么需要正则表达式?更具体地说,您要做什么,这需要您使用正则表达式在字符串中接收输入键?它是基于控制台的应用程序吗?您标记了问题 c#,但这里没有 c# 代码或与 c# 相关的任何内容。更重要的是:您是在寻找字符串中的新行(即回车键在一系列字符中的表示),还是接受字符串作为输入?
  • @WiktorStribiżew 基本上它是一个 C# Windows 服务应用程序,我们希望通过 SQL 引擎处理验证。然后,我们可以根据需要更改验证,而无需对产品进行更新。几周后,我们将加强对某些事情的验证,但目前我们已经到位。
  • 那么,只是将RegexOptions.Singleline 标志添加到您的正则表达式吗?喜欢new Regex(@"^.*$", RegexOptions.Singleline)

标签: c# regex


【解决方案1】:

尝试在正则表达式引擎上设置s 标志。这将确保 . 元字符将匹配换行符。

这是link to a working example

另外,作为旁注,您可以将整个表达式压缩为 ^.*$,而不是 ^$|^.+$,以实现相同的结果并获得更好的性能。


【讨论】:

  • s 是空格,而不是多行
  • \s 是空格。 m 标志是多行的,但这不是我所引用的。 s 标志是单行模式,使 . 匹配换行符。如果您对这些区别感到困惑,请查看示例。
【解决方案2】:

在 C# 中,您需要 RegexOptions.Singleline 选项。请参阅this SO post 了解更多信息。

这是一个真正匹配整个字符串的快速示例,所以它没有用。

var regex = new Regex(@"^.*$",
              RegexOptions.IgnoreCase | RegexOptions.Singleline);

在您未来的验证代码中,您需要将 .* 替换为您的验证内容。

【讨论】:

    猜你喜欢
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 2013-11-11
    • 2017-11-16
    相关资源
    最近更新 更多