Следующее ответит на ваш вопрос в письменном виде, но см. Мое дополнительное примечание:
^(?!\s*$)[-a-zA-Z0-9_:,.' ']{1,100}$
Объяснение: (?!\s*$)
является негативным прогнозом . Это означает: «Следующие символы не могут соответствовать подшаблону \s*$
». Когда вы принимаете во внимание подшаблон, это означает: «Следующие символы не могут быть ни пустой строкой, ни строкой пробелов на всем пути до конца. Следовательно, после этой точки должен быть хотя бы один непробельный символ строка." Как только вы выработаете это правило, вы можете разрешить пробелы в своем классе персонажей.
Дополнительное примечание: Я не думаю, что ваш ' '
делает то, что вы намерены. Похоже, вы пытались представить символ пробела, но регулярное выражение интерпретирует '
как буквальный апостроф. Внутри класса символов ' '
будет означать «соответствует любому символу, который является '
, пробелом или '
» (обратите внимание, что второй символ '
является избыточным). Я подозреваю, что вы хотите, больше похоже на это:
^(?!\s*$)[-a-zA-Z0-9_:,.\s]{1,100}$