Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 十进制值限制为16位的正则表达式_C#_Regex_Wpf_Xaml_Devexpress - Fatal编程技术网

C# 十进制值限制为16位的正则表达式

C# 十进制值限制为16位的正则表达式,c#,regex,wpf,xaml,devexpress,C#,Regex,Wpf,Xaml,Devexpress,我想要一个正则表达式来限制输入的十进制值最大为16位或15位,一个字符包括小数点 我在下面的正则表达式中发现它在C代码中工作,但当我在TextEdit xaml中使用它作为掩码时。DevExpress引发异常语法错误: 遮罩: ^?:?=.{0,16}$\d*\。\d+\d{0,16}[kkmmbtt]$ TextEdit Xaml: <dxe:TextEdit HorizontalAlignment="Left" MaskType="RegEx" Mask="(?:(?=.{0

我想要一个正则表达式来限制输入的十进制值最大为16位或15位,一个字符包括小数点

我在下面的正则表达式中发现它在C代码中工作,但当我在TextEdit xaml中使用它作为掩码时。DevExpress引发异常语法错误:

遮罩:

^?:?=.{0,16}$\d*\。\d+\d{0,16}[kkmmbtt]$ 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"/>
我想从中实现的目标:

用户可以输入16位十进制值,包括小数点或 用户可以输入15位数字和一个字符,包括小数点 他一次只能输入小数点 输入字符串的总长度不得超过16个字符。 根据:

扩展正则表达式为 创建输入掩码。此模式中掩码使用的语法类似 按照POSIX ERE规范定义的语法。反向引用 不支持

因此,您不能使用分组构造,如?:子表达式或?=子表达式等。您可以使用一些奇怪的掩码,如:

\{0 0 0,16}{00 0 0 0 0 0 0,16}}}{{00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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,14}\R\n 在您的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"/>

MaskType=RegEx-Mask=?:?=.{0,16}$[0-9]*[.]?[0-9]+|[0-9]{0,16}[kkmbbtt]?@grantwiney异常是:语法错误,直接在XAML编辑器中抛出。您好,nempoBu4,谢谢您的回复。根据情况,这个正则表达式很好,但它太长了。阿基夫