Ваше регулярное выражение (не нужно экранировать *
внутри выражения в квадратных скобках)
[^*]
соответствует любому одиночному символу, который является не an *
. Поскольку регулярные выражения не привязываются неявно, до тех пор, пока любой символ в строке не является *
, совпадение будет успешным. Якорение
^[^*]$
соответствует точно тем односимвольным строкам, которые не являются *
. Он не будет соответствовать более длинной строке.
Если вы добавите *
после него, вы получите регулярное выражение, которое соответствует 0 или дополнительным последовательным символам, которые не являются *
. Якорение дает вам регулярное выражение, которое соответствует любой строке (включая пустую строку), которая состоит только из символов, отличных от *
.
^[^*]*$
Если вы хотите сопоставить только непустые строки, убедитесь, что строка начинается с символа, отличного от *
, затем проверьте, что остальные (если есть) также не *
.
^[^*][^*]*$
Это можно сократить, используя +
вместо *
для повторения. (*
соответствует 0 или более; +
соответствует 1 или более.)
^[^*]+$