仅允许数字和百分号的正则表达式

时间:2018-08-08 10:43:33

标签: c# .net regex

我正在使用此表达式允许文本框仅具有绝对值或仅百分比。

 ^(-?\d+|\d+[.]\d+)%?$

它可以正常工作,但可以在数字或%符号后添加任何其他字符。

有效模式是 -130 300% 23.23%

它无效,可以$ 130正常工作 但是它将$ 130视为有效。 因此,张贴数字表示它允许任何字符。

所有,我希望我的文本框具有绝对值(+或-)或百分比。

没有其他字符。

3 个答案:

答案 0 :(得分:1)

这应该为您完成,对于百分比,请使用\\d+(?:\\.\\d+)?%,对于数字,请使用\p{N} 示例https://regex101.com/r/zsNIrG/2

答案 1 :(得分:1)

以下正则表达式:

^[%$][-+]?\d+([,.]\d{1,2})?|^[-+]?\d+([,.]\d{1,2})?[$%]

应适用于所有此类输入:

  • -130300%
  • +130300%
  • 130300%
  • 23.23%
  • -23.23%
  • +23.23%
  • 130 $

您可能知道,我们有两个命题 ^ [%$] [-+]?\ d +([,。] \ d {1,2})?还是(我们指的是它由 | )和第二部分 ^ [-+]?\ d +([,。] \ d {1,2})?[$%]

这是两部分的剖析:

  1. 第一部分:

    • [%$] 匹配的字符串以 $
    • 开头
    • [-+]??这意味着可以在特殊字符(%或$)之一后跟- + 但不是必需的。
    • \ d + ,这意味着后跟一个或多个数字。
    • ([,。] \ d {1,2})??这意味着后面跟着(逗号,)(点。 ),后跟一个或两个数字 {1,2} ,但这不是必需的,因为整个表达式后跟 inregreg标记?
  2. 第二部分 ^ [-+]?\ d +([,。] \ d {1,2})?[$%]

    • [-+]??这意味着匹配的字符串可以以- + 开头,但这不是必需的。
    • \ d + ,这意味着后跟一个或多个数字。
    • ([,。] \ d {1,2})??这意味着后面跟着(逗号,)(点。 ),后跟一个或两个数字 {1,2} ,但这不是必需的,因为整个表达式后跟 inregreg标记?
    • [%$] 匹配的字符串应以 $
    • 结尾

答案 2 :(得分:-1)

您可以为此使用此表达式:@“ [0-9] +%$”