2013-04-23 3 views
1

Я применяю ниже параметр Маска для управления Devexpress TextEdit, но при выполнении дайте мне синтаксическую ошибку.Devexpress TextEdit Mask regex Invalid

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), вы уверены ленивые операторы поддерживаются? Кроме того, они, похоже, не удваивают escape-код в документе, но это не приведет к синтаксической ошибке. – Loamhoof

+0

Обратитесь к [TextEdit EditMask RegEx] (http://www.devexpress.com/Support/Center/p/Q338736.aspx) –

ответ

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. на \.