【问题标题】:Regex to get values of format Number-Decimal-Number (eg 1.2)正则表达式获取格式 Number-Decimal-Number 的值(例如 1.2)
【发布时间】:2016-03-18 21:27:04
【问题描述】:

我需要确保文本框具有针对它输入的特定格式...来自变量的数字,然后是小数点,然后是任何其他数字(1.10、2.6 等...)重要的是第一个数字应该来自一个变量,那么它必须是一个小数,后跟另一个数字。

我找不到任何太具体的东西,而且 REGEX 功能看起来需要对它的工作原理进行一些调查......如果我能在这里得到一个快速的结果会很棒!

我本能地(虽然没想到它会起作用)尝试:

If System.Text.RegularExpressions.Regex.IsMatch(txbCriterionNo.Text, OutcomeNo.ToString() + "." + "^[0-9]+$") Then
...

OutcomeNo 是一个整数变量——所以我希望你能看到我的目标。因此,格式必须是整数变量 - 小数点,然后是另一个整数值。

应该怎么做:

1.55.4210.5

什么不应该起作用:

.14a.11.c

等等……

谢谢!

【问题讨论】:

  • Regex 可能不是答案 - 因此我很想听听有关如何执行此规则的任何其他建议。
  • 请给出两个具体的输入示例:一个符合您的条件,一个不符合您的条件
  • 我进行了编辑以包含更多详细信息...
  • 我意识到我的代码无法工作,因为它不遵循 REGEX 约定 - 但我希望这足以以某种外行的方式展示我正在寻找的东西。

标签: regex vb.net


【解决方案1】:

Chris85 为我指明了正确的方向,但我还需要确保第一个数字与变量值匹配,因此我得出了以下结果……

If System.Text.RegularExpressions.Regex.IsMatch(txbCriterionNo.Text, "^\d+\.\d+$") And txbCriterionNo.Text.Substring(0, Convert.ToInt32(InStr(txbCriterionNo.Text, "."))) = OutcomeNo Then

这里我们首先使用正则表达式 "^\d+.\d+$" 来确保格式正确 [number][decimal][number] 然后第二次检查获取小数点的位置并使用它来获取我们想要与我的变量 OutcomeNo 进行比较的子字符串。

谢谢大家!!

【讨论】:

  • 如果第一个数字需要匹配一个变量,你不能将该值连接到正则表达式中吗?不熟悉 vb.net,但可能类似于 "^" + txbCriterionNo.Text + "\.\d+$"?
  • 是的,这就是我一直在寻找的 - 没有机会尝试您的建议,但会试一试。我尝试了一些类似无济于事的事情......不过会通知你!
【解决方案2】:

TextBox 这将只允许输入digitsdot。它必须以数字开头。

 Private Sub txtValue_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtValue.KeyPress
   Dim txtValue As txtValue = DirectCast(sender, txtValue)
   If Not (Char.IsDigit(e.KeyChar) Or Char.IsControl(e.KeyChar) Or (e.KeyChar = "." And txtValue.Text.IndexOf(".") < 0) ) Then
      e.Handled = True
      If txtValue.Text.StartsWith(".") Then
         txtValue.Text = ""
      End If
   End If
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 2023-02-26
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    相关资源
    最近更新 更多