正则表达式为十进制值和可选字符串

时间:2017-04-27 09:14:26

标签: c# regex

我正在寻找一个正则表达式来验证评级(1-10)+可选文本。 等级是小数,有1个点,可以使用点或逗号分隔符。 后面跟一个可选的空格+字符串。

有效

  • 7
  • 7,5
  • 7.5
  • 7,5这是我的字符串
  • 7.5你好

无效

  • 7,75
  • 11
  • 7这是我的字符串
  • 7.这是我的字符串
  • 10.5 string

我已经得到了这个以获取小数值,但我不确定如何获取它背后的可选文字。

LIKE #{value} || '%'

1 个答案:

答案 0 :(得分:3)

根据您的示例判断,初始编号后的空格不是可选的。因此,您可以使用的模式是

SolidColorBrush

或 - 因为与<Style TargetType="{x:Type Button}" x:Key="WindowButtonStyle"> <Setter Property="Width" Value="46" /> <Setter Property="Height" Value="32" /> <Setter Property="BorderThickness" Value="0" /> <Setter Property="VerticalAlignment" Value="Center" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Button}"> <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"> <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}" /> </Border> <ControlTemplate.Resources> <Storyboard x:Key="MouseOverAnimation"> <DoubleAnimation Storyboard.TargetName="border" Storyboard.TargetProperty="Background.(SolidColorBrush.Opacity)" To="1.0" Duration="0:0:0.15" /> </Storyboard> <Storyboard x:Key="MouseOutAnimation"> <DoubleAnimation Storyboard.TargetName="border" Storyboard.TargetProperty="Background.(SolidColorBrush.Opacity)" To="0.0" Duration="0:0:0.15" /> </Storyboard> </ControlTemplate.Resources> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Trigger.EnterActions> <BeginStoryboard Storyboard="{StaticResource MouseOverAnimation}" /> </Trigger.EnterActions> <Trigger.ExitActions> <BeginStoryboard Storyboard="{StaticResource MouseOutAnimation}" /> </Trigger.ExitActions> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> 的部分匹配足以验证字符串 - 将^(?:10|[1-9](?:[.,][0-9])?)(?:\s.*)?$ 替换为负前瞻Regex.IsMatch,在数字后面需要空格或字符串结尾:

(?:\s.*)?$

请参阅regex demo

<强>详情:

  • (?!\S) - 字符串的开头
  • ^(?:10|[1-9](?:[.,][0-9])?)(?!\S) ^^^^^^^ - ^(?:10|[1-9](?:[.,][0-9])?)10之间的数字,后跟可选的19序列单个数字然后......
  • , - 任意空格的可选序列,后跟任何字符到字符串的结尾 - 或 -
  • . - 如果当前位置右侧没有非空格字符,则会导致匹配失败的否定前瞻。

C# test

(?:\s.*)?$

输出:

(?!\S)