2013-08-19 5 views
0

Как ограничить количество символов (альфа- или числовой или что-нибудь)Regex Точное количество символов

примера я (х может быть любой символ)

name.xxx-XXX-XXXXXX-name 
name.XXXXXXX-name 

Я хочу, чтобы исключить те из первый формат, и я думал, что я должен сделать что-то вроде

name.{7}*-name 

Я только хочу, чтобы те с 7 символов между . и -

+1

Какой язык вы используете? – SheetJS

+0

@Newbie, вы прокомментировали ответ, что это «либо xxx-XXX-XXXXXX, либо другое», что вы имели в виду именно? Кроме того, существует ли разница между x и X? Мой пример ниже будет соответствовать, как вы говорите ... 'name.' и' -name' с 7 из «альфа-или числовой или любой» между ними. Если это не то, что вы хотите, просим пояснить. – smerny

ответ

0

Вам просто нужно удалить *, так как это конфликтует с {7} и недопустимым регулярным выражением. Значение * означает «0 или более», а {7} означает «ровно 7».

Кроме того, если вы хотите фактическую точку между именем и 7 символов, вы хотите добавить точку, убегая его:

name\..{7}-name 

Это будет соответствовать name.XXXXXXX-name, как вы надеялись. Например, как name.Xa%X3XX-name. . будет соответствовать почти любому персонажу, кроме символов новой строки, если вы не добавите для него флаг.

+0

-1: {7} не является допустимой конструкцией в теории (обычные языки), а OP фактически не указывает язык – SheetJS

+0

Какой механизм регулярных выражений не поддерживает '{7}'? – smerny

+0

Помимо очевидного ('name. {7}' на многих языках интерпретируется как 7 произвольных символов - обратите внимание на '.'), некоторые языки, такие как VimL, ​​используют' \ {7} ' – SheetJS

2

Вам не нужны только 7 символов. Вы хотите 7 знаков без штриха

name\.[^-]{7}-name 
+0

Привет, на самом деле формат исправлен, что упрощает его использование либо xxx-XXX-XXXXXX, либо другого – nevermind

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