HTML5模式匹​​配数值(整数,浮点正数或负数),TRS或PCB忽略大小写?

时间:2017-09-22 22:29:08

标签: regex html5

我需要我的模式匹配任何不超过3位数的数值。在句点之后可以是小数,不超过2位数。数值可以是正数或负数。应该接受的最后两个值应该是TRS或PCB。我想忽略这两个值的情况。因此,如果用户键入Sub ChangeSubject() Dim obj As Object Dim msg As Outlook.MailItem Dim subject As String Set obj = ActiveExplorer.Selection subject = "Picture" If Not obj Is Nothing Then For i = 1 To obj.Count Set msg = obj.Item(i) With msg .subject = subject End With Next i ElseIf Not msg Is Nothing Then msg.subject = subject End If End Sub TRS,则两者都将被接受。以下是我到目前为止的情况:

trs

由于某种原因,我的数字值不被接受。如果有人可以提供帮助,请告诉我。谢谢。

1 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

^(?!\s*$)(?:TRS|PCB|[-]?999|[-]?(?:(?:[1-8]\d{2}|9\d[1-8]|[1-9]\d|\d)?(?:\.(?:0[1-9]|[1-9]\d))?))$

Click here for DEMO

<强>解释

  • ^ - 字符串的开头
  • (?!\s*$) - 避免匹配包含ONLY 0+空格的字符串的否定前瞻
  • (?:TRS|PCB|[+-]?999|[-+]?(?:(?:[1-8]\d{2}|9\d[1-8]|[1-9]\d|\d)?(?:\.(?:0[1-9]|[1-9]\d|[1-9]))?)) - 匹配TRSPCB或所需的数值(下面提供的分解)。要使其不区分大小写,请使用演示链接
  • 中显示的/i
  • [-]?999 - 匹配0 {或1次出现-后跟999
  • (?:[1-8]\d{2}|9\d[1-8]|[1-9]\d|\d)? - 匹配小数点前所需的3/2/1位数。它是可选的,因为我们可以有以小数点开头的值。
  • (?:\.(?:0[1-9]|[1-9]\d))? - 匹配小数点后的2位数。它也是可选的,以匹配积分值。
  • $ - 字符串结尾