Я пытаюсь реализовать регулярное выражение в Dart, чтобы гарантировать, что строка содержит не более 20 символов, alphanumeri c, но может содержать пробелы и тире, а также не может быть пустой. Я пробовал несколько разных решений, но не могу заставить его почтить негативную перспективу «пустой строки». Вот что у меня сейчас:
^(?!\s*\$)[a-zA-Z0-9- ]{1,20}\$
Что мне не хватает?