Рейтинг:
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
Приведенный выше (обновленный для пробелов) фрагмент кода работает так, как ожидалось, и печатает "нет совпадения", если строка слишком длинная и содержит только разрешенные символы.