2012-08-08 2 views
0

У меня есть строка, которая должна быть следующего формата: XX999900. XX должен быть только символом десятичной дроби, а затем шестью цифрами.Нужно проверить формат строки в C#

Так я думал, используя регулярное выражение следующим образом:

string sPattern = @"^\\[A-z]{2}\\d{6}$"; 
indexNumber = "ab9999.00"; 
if (Regex.IsMatch(indexNumber, sPattern) 
{ 
    // do whatever 
} 

Он выходит из строя. Может кто-нибудь сказать мне, что не так?

+1

Не могли бы вы объяснить, что является допустимыми входами и недействительными входами? У вас есть «XX999900» в вашем описании, но «ab9999.00» в вашем коде (обратите внимание на десятичную точку). Regex будет отличаться для каждого. – Oded

+0

Check Reg-ex здесь, надеюсь, это вам поможет http://www.regular-expressions.info/examples.html – KKP

ответ

7

Я не верю [A-z] является допустимым классом символов. Вам, конечно, не нужно \\ при использовании @.

Попробуйте это:

@"^[a-zA-Z]{2}\d{6}$" 

Если вам нужен формат иметь 4 цифры, за которыми следует . затем еще две цифры, попробуйте следующее:

@"^[a-zA-Z]{2}\d{4}\.\d{2}$" 

(Обратите внимание, что для .NET, \d будет соответствовать цифрам в любой сценарий, поэтому вы можете заменить его [0-9], если вы хотите, чтобы это соответствовали)

+0

@Downvoter - прокомментировать? – Oded

+0

Это работает. большое спасибо – Dadou

1

У вас слишком много эвакуационных персонажей. Попытайтесь:

string sPattern = @"^[a-zA-Z]{2}\d{6}$"; 
0

Он терпит неудачу, потому что значение, которое вы тестируете как десятичное в нем, и ваш шаблон регулярного выражения нет. Кроме того, ваш шаблон регулярного выражения будет смотреть на всю строку. Это означает, что начало начинается в начале строки, а $ говорит о конце строки. Если вы хотите только «начать с», а затем отпустите $ в конце шаблона.

1

A-z недействителен (смешанный случай), и у вас нет 6 последовательных цифр. У вас есть 4, десятичный, а затем еще 2. Попробуйте

^[a-zA-Z]{2}\d{4}.\d{2}$ 
Смежные вопросы