【问题标题】:regular expression to check input on multiline textbox正则表达式检查多行文本框的输入
【发布时间】:2011-04-22 13:39:42
【问题描述】:

假设我有一个多行文本框,我想检查一下,最多 5 行中的 1-2 位数字。我发现一个正则表达式模式回答了另一个类似的问题,但即使在多次修改后它对我也不起作用。

我目前正在使用以下内容,但没有成功。

Dim textCheck As New Regex("(^\d{1,2}$\r?\n?){0,5}", RegexOptions.Multiline)

有人可以帮我解决我做错了什么吗?

谢谢

【问题讨论】:

    标签: regex vb.net visual-studio-2010 textbox multiline


    【解决方案1】:

    所以您想要匹配由换行符分隔的 1 到 2 位数字的列表,最多 5 个?如果是这样,这应该工作。最后一个换行符是可选的,如果字符串中有任何其他内容不匹配。 (为此,请勿使用 RegexOptions.Multiline)

    我用 C# 对此进行了检查,所以我不确定转义字符是否正确。我注意到你的在 d 之前只有 1 个斜线。在 c# 中,您需要两个,但我将其从中删除以使其看起来像您的。

    Dim textCheck As New Regex("^\d{1,2}((\r|\n|\r\n)\d{1,2}){0,4}(\r|\n|\r\n)?$")
    

    【讨论】:

      【解决方案2】:

      首先,获取 RegEx Designer 的副本。它是免费的,值得为这种事情付出。

      http://www.radsoftware.com.au/?from=RegexDesigner

      那么,我想你可能想要的是这样的

      (^\d{1,2}\r?\n?){0,5}\z

      然后测试匹配是否包含整个输入。中间的 $ 无济于事, \z 强制匹配到字符串的末尾。不过,我可能错过了一些细节。同样,RegExDesigner 让使用正则表达式变得更加有趣!

      【讨论】:

      • 很好,非常感谢。我一直在考虑寻找一个好的免费正则表达式设计师。我会试一试,然后告诉你会发生什么。
      • 我认为这可能与“123456”匹配,因为换行符是可选的。
      • 是的,这比我使用的更接近一些,但仍然没有完全捕捉到我需要的东西。感谢您的帮助以及 RegEx 设计器的链接。
      • @mark,嗯,是的,似乎是这样。正则表达式似乎总是充满“细节中的魔鬼”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多