Member 13065591 Ответов: 2

Я должен ввести валидацию для 28 символов, которая допускает пробел, и если мы введем любое имя, имеющее более 28 символов, оно должно скорее отклонить это


”[A-Za-z0-9_@./#&+-\/ь]{0,28}”/&ГТ;
но это допускает пустое пространство, но не отвергает имя, имеющее более 28 символов, а скорее усекает его и допускает только 28 символов для того же самого .

Что я уже пробовал:

”[A-Za-z0-9_@./#&+-\/ь]{0,28}”/&ГТ;

2 Ответов

Рейтинг:
0

Jochen Arndt

В вашем образце есть некоторые ошибки.

То - знак минус определяет диапазон внутри заключенного в квадратные скобки класса символов. Поэтому он должен быть экранирован или первым символом, если вы хотите соответствовать этому символу. При использовании +-\/ по замыслу тогда он соответствует всем символам от 0x2b до 0x2f (включая точку, которую затем можно удалить).

То s в конце концов это бесполезно.
[РЕДАКТИРОВАТЬ]
Чтобы разрешить пробелы это должно быть \s.
[/РЕДАКТИРОВАТЬ]

Чтобы проверить допустимые длины, вы должны сопоставить всю строку с помощью ^ и $.

Вы не указали, какой язык используете. Вот рабочее регулярное выражение Perl:

# Edit: With white spaces
# With range from + to /
#if ($test =~ /^[A-Za-z0-9_@#&+-\/\s]{0,28}$/) {
if ($test =~ /^[A-Za-z0-9_@.#&+\-\/\s]{0,28}$/) {
    print "match";
}
else {
    print "no match";
}


Member 13065591

Я использовал perl, так как я использую "s", чтобы освободить место ... но я использую это как выражение и использую файл для проверки имени.. это принесет как ..
когда я тестирую, я обнаружил, что он также проходит проверку, когда я даю имя более 28 символов и усекаю его и обновляю базу данных с 28 символами

Jochen Arndt

Мне было не совсем ясно, следует ли разрешать пробелы или нет.
Но если они должны быть разрешены вы должны использовать \s.

Я проверил его здесь:
Нет совпадения, если строка длиннее (при использовании ^[...]{0,28}$).

Member 13065591

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

Jochen Arndt

Приведенный выше (обновленный для пробелов) фрагмент кода работает так, как ожидалось, и печатает "нет совпадения", если строка слишком длинная и содержит только разрешенные символы.

Рейтинг:
0

Patrice T

Как вам было рекомендовано, тогда вы должны включить маркеры начала и конца укуса.

Всего несколько ссылок в надежде помочь вам построить и протестировать регулярное выражение.
Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
Это показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение:
Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]