2015-02-19 1 views
0

У нас есть поля с пользовательским вводом; и до сих пор наше правило для проверки этого содержимого было [A-Z][A-Z0-9]{0,7}. Значение: любое заглавное слово с хотя бы одним символом; начиная с персонажа; и до 8 символов для всего слова.Есть ли регулярное выражение, которое позволяет использовать пробелы для слова с фиксированным размером?

Теперь мне говорят, что мы также должны принимать «отстающие» пространства; но, конечно же, только конечные пробелы. Обновить; поскольку первый ответ получил это неправильно: максимальная длина всего слова по-прежнему составляет 8 символов! Потому что именно это и заставило меня задать этот вопрос.

Я предполагаю, что это может быть проверено с двумя выражениями:
а) [A-Z][A-Z0-9 ]{0,7} ... должен соответствовать входной и
б) [ ][A-Z0-9] не должен совпадать с входной

(второе выражение просто найти любой «не -trailing ")

Но есть ли еще одно регулярное выражение, которое я мог бы использовать для проверки этого условия?

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

+0

Но вы на самом деле не хотите, чтобы захватить пространства в качестве входных данных, да ? Я бы обрезал вход всех ведущих и конечных пробелов, а затем * применил существующий валидатор. –

+0

Хм, хорошо, через ваши обновления, я вижу, что вы * * хотите захватить пробелы. Неважно. Это странное требование! :) –

ответ

4

Если вы хотите, чтобы конечные пробелы только затем использовать:

^[A-Z][A-Z0-9]{0,7} *$ 

Или:

^[A-Z][A-Z0-9]{0,7}\h*$ 

Здесь \h* горизонтальна пробельные, что соответствует 0 или пробел или символы табуляции только на конце.


EDIT: на основе отредактированного вопроса, который вы можете использовать это опережение регулярного выражение на основе:

^(?=[A-Z0-9\h]{1,8}$)[A-Z][A-Z0-9]*\h*$ 

RegEx Demo

+0

Возможно, я не был точным: даже с завершающими пробелами - не более 8 символов в целом. Так что «A234567» (9 символов!) Не допускается; но «A1234». – GhostCat

+0

ok да, о чем не было ясно, можете ли вы отредактировать вопрос с этой информацией. Тем временем я обновляю ответ. – anubhava

+0

ok проверить обновленный ответ – anubhava

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