正则表达式获取格式Number-Decimal-Number的值(例如1.2)

时间:2016-03-18 11:43:51

标签: regex vb.net

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

我无法找到任何过于具体的内容,而REGEX功能看起来需要对它如何运作进行一些调查...如果我能在这里得到一个快速的结果,那就太棒了!

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

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

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

应该做些什么:

1.5 5.42 10.5

什么不该起作用:

.14 a.1 1.c

等等......

谢谢!

2 个答案:

答案 0 :(得分:0)

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进行比较的子字符串。

谢谢大家!!

答案 1 :(得分:0)

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