«Любые идеи о том, почему это не подтверждается моими требованиями?»
Поскольку регулярное выражение вы используете содержит синтаксис не поддерживается JS - если смотреть в консоли браузера вы увидите сообщение об ошибке при попытке проверить. (Возможно, вам нужно будет выбрать опцию «persist», чтобы увидеть ее.)
Ваша ошибка в том, что вы либо поставили два квантора вместе, либо, возможно, увидели так называемый притяжательный квантификатор и попытались его использовать (но JS их не поддерживает).
Решение просто использовать {7,}
без +
после него, и ваша картина будет почти работа по назначению: кавычки вокруг пространства в классе символов не нужны (и в частности, позволяет этот символ) , и точка не нуждается в экранировании в символьном классе - так что шаблон, который вы хотите, либо ^[0-9.\- ]{7,}$
, либо ^[\d .-]{7,}$
.
В качестве быстрой заметки о притяжательных кванторах по сравнению с другими типами:
x{7,}
является квантором с жадного поведения, а это означает, что соответствует й стольких раз, сколько это возможно, но требуется не менее семи раз.
x{7,}+
является квантор с притяжательной поведения, а это означает, что соответствует х столько раз, сколько найдено, но по крайней мере семь раз требуется.
x{7,}?
является квантором с ленивым поведения, то есть он пытается соответствовать й в семь раз, и после этого , как несколько, как это может уйти с на матч успешно.
x+
является сокращением на x{1,}
, и вы можете иметь x++
и x+?
, чтобы перейти от жадного квантификатора по умолчанию.
Опять же, реализация регулярных выражений, используемая JS и CF, не поддерживает притяжательные кванторы (следовательно, почему недействительный синтаксис), но они поддерживают как жадные (по умолчанию), так и ленивые.
Разница между притяжательной и жадной может казаться тонкой - и для шаблона с одним элементом, как у вас есть, он фактически не вступает в силу - но он может иметь очень существенные отличия в исполнении ... но это отклоняется трек основного ответа, поэтому я остановлюсь здесь.