"this is A way to do it with regex".match(/^[^A-Z]*[A-Z]?[^A-Z]*$/)
Regex ломается вот так ...
начало строки (^
), за которым следует не заглавная буква ([^A-Z]
) ноль или более раз (*
), за которой следует необязательная (?
) заглавная буква ([A-Z]
), за которой следует не заглавная буква ([^A-Z]
) ноль или более раз (*
) с последующим концом строки ($
)
РЕДАКТИРОВАТЬ: более простой метод, основанный на идее из ответа @ IAbstractDownvoteFactory
var string = "This is a simple way to do it"
// match all capital letters and store in array x
var x = string.match(/[A-Z]/g)
// if x is null, or has length less than 2 then string is valid
if(!x || x.length < 2){
// valid
} else {
// not valid
}
Regex сопоставляет все заглавные буквы и возвращает массив совпадений. Длина массива равна количеству прописных букв, поэтому меньше 2 возвращает true.