2014-01-16 4 views
1

Я пытаюсь создать регулярное выражение в C#, чтобы проверить, следует ли строка следовать определенному формату.Регулярное выражение для соответствия точно началу строки

Формат я хочу это: [цифра] [пробел] [точка] [письма]

Например:

123 .abc следовать формату

12345 .def следовать формату

123 а не соответствуют формату

Я пишу это выражение, но оно не работает completelly хорошо

Regex.IsMatch(exampleString, @"^\d+ .") 

ответ

6

^ соответствует началу строки, и вы получили это право.

\d+ соответствует одной или нескольким цифрам, и вы тоже получили это право.

Пространство в регулярном выражении соответствует буквальному пространству, так что это тоже работает!

Однако, . является подстановочным знаком и будет соответствовать любому персонажу. Вам нужно будет избежать этого с помощью обратной косой черты, например, если вы хотите соответствовать буквальному периоду: \..

Чтобы соответствовать буквам сейчас, вы можете использовать [a-z]+ сразу после периода.

@"^\d+ \.[a-z]+" 
2

dot is a special character в регулярное выражение, которое соответствует любому символу (за исключением, как правило, переводы строк). Для того, чтобы соответствовать буквальное ., вам нужно, чтобы избежать его:

Regex.IsMatch(exampleString, @"^\d+ \.") 

Если вы хотите включить условие для последующих букв, используйте:

Regex.IsMatch(exampleString, @"^\d+ \.[A-Za-z]+$") 
0

Для вас, чтобы получить ваш, чтобы соответствовать, держать в помните, что период в регулярных выражениях является особым символом, который будет соответствовать любому персонажу, поэтому вам нужно будет избежать этого.

Кроме того, \ s соответствует любому символу пробела (вкладки, разрывы строк).

^\d+\s+ \..+ 

(непроверенные)

Смежные вопросы