2013-04-23 87 views
1

我在Mask设置下应用Devexpress TextEdit控件,但在执行时给我语法错误。Devexpress TextEdit Mask正则表达式无效

textEdit1.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.RegEx; 
textEdit1.Properties.Mask.EditMask = "(100(?:\\.0{1,3})?|0*?\\.\\d{1,3}|\\d{1,2}(?:\\.\\d{1,3})?)%"; 

使用此正则表达式的概念是从0-100百分比的输入值以及3位十进制可选。

25, 25.5, 60, 60.369, 99 but 101, 10.2569是无效的值。

请指导我如何更正此表达式。

+0

因为我在[doc](http://documentation.devexpress.com/#WindowsForms/CustomDocument1501)找不到它,你确定懒惰的运营商支持?此外,他们似乎没有在文档中双重转义,但这不会造成语法错误。 – Loamhoof 2013-04-23 08:39:19

+0

请参阅[TextEdit EditMask RegEx](http://www.devexpress.com/Support/Center/p/Q338736.aspx) – 2013-04-23 11:57:18

回答

0

试试下面的(我没有访问的DevExpress这里,所以不能完全测试):

(100(\R.0{1,3})?)|((\d{1,2}(\R.\d{1,3})?)) 

它是与分开的两个备用件“|”,第一部分检查100 (100,100.0,100.00,100.000)

第二部分处理小数点前一位或两位数字的数字,以及可选小数点后三位数字(25,25.5,60, 60.369,99)。

\R.实际上匹配由当前区域性的System.Globalization.NumberFormatInfo.NumberDecimalSeparator属性指定的小数分隔符。每个文档。如果你只是想拿起小数点,不管你可以更改\R.\.