我想要一个正则表达式来限制最大输入十进制值。 16位或15位和一个字符(包括小数点)
我在Regex下面发现它正在使用C#代码查找,但当我在TextEdit xaml中使用它作为掩码时。 (DevExpress)抛出异常syntax error
:
面膜:
^(?:(?=.{0,16}$)\d*\.\d+|\d{0,16})[kKmMbBtT]?$
TextEdit Xaml:
<dxe:TextEdit HorizontalAlignment="Left" MaskType="RegEx"
Mask="(?:(?=.{0,16}$)[0-9]*([.]?[0-9]+)|[0-9]{0,16})[kKmMbBtT]?"
VerticalAlignment="Top" Width="150"
EditValue="{Binding DecValue, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
Margin="10,33,0,0"/>
目的我希望从中实现:
答案 0 :(得分:0)
扩展正则表达式提供几乎无限的灵活性 创建输入掩码。掩码在此模式下使用的语法类似 到POSIX ERE规范定义的语法。返回参考 不受支持。
所以,你不能使用像(?: subexpression)
或(?= subexpression)
等分组结构。你可以使用这样一些奇怪的掩码:
\d{0,16}|\d{14}\R.\d{1}|\d{13}\R.\d{1,2}|\d{12}\R.\d{1,3}|\d{11}\R.\d{1,4}|\d{10}\R.\d{1,5}|\d{9}\R.\d{1,6}|\d{8}\R.\d{1,7}|\d{7}\R.\d{1,8}|\d{6}\R.\d{1,9}|\d{5}\R.\d{1,10}|\d{4}\R.\d{1,11}|\d{3}\R.\d{1,12}|\d{2}\R.\d{1,13}|\d{1}\R.\d{1,14}|\R.\d{1,15}
在你的XAML中:
<dxe:TextEdit HorizontalAlignment="Left" MaskType="RegEx"
Mask="\d{0,16}|\d{14}\R.\d{1}|\d{13}\R.\d{1,2}|\d{12}\R.\d{1,3}|\d{11}\R.\d{1,4}|\d{10}\R.\d{1,5}|\d{9}\R.\d{1,6}|\d{8}\R.\d{1,7}|\d{7}\R.\d{1,8}|\d{6}\R.\d{1,9}|\d{5}\R.\d{1,10}|\d{4}\R.\d{1,11}|\d{3}\R.\d{1,12}|\d{2}\R.\d{1,13}|\d{1}\R.\d{1,14}|\R.\d{1,15}"
VerticalAlignment="Top" Width="150"
EditValue="{Binding DecValue, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
Margin="10,33,0,0"/>