Мне нужна строка в JavaScript, которая может содержать одно или более слов, начинающаяся с буквы. Каждое слово может содержать цифры,буквы, тире и подчеркивание между соседними буквами/цифрами. Слова не должны начинаться и заканчиваться тире или подчеркиванием. В конце строки допустимы пробелы. Первое слово обязательно начинается с буквы и может быть длинною 1 или более.
Пока я пришел к следующему
/^[a-zA-Z]+( [a-zA-Z0-9\-\_]*)*[a-zA-Z0-9]+$/
Но оно не работает как мне нужно, к сожалению. В частности, выражение типа a s--5__f
тоже пройдет тест.
Вы можете использовать
/^[a-zA-Z][a-zA-Z0-9]*(?:[-_][a-zA-Z0-9]+)*(?:\s[a-zA-Z0-9]+(?:[-_][a-zA-Z0-9]+)*)*\s*$/
См. демо выражения онлайн.
Подробности
^
- начало строки[a-zA-Z]
- буква[a-zA-Z0-9]*
- 0 и более букв и цифр(?:[-_][a-zA-Z0-9]+)*
- 0 и более повторов дефиса или знака подчёркивания, за которыми следует 1 и боле букв/цифр(?:\s[a-zA-Z0-9]+(?:[-_][a-zA-Z0-9]+)*)*
- 0 и более повторов...
\s
- пробельный символ[a-zA-Z0-9]+
- 1+ букв/цифр(?:[-_][a-zA-Z0-9]+)*
- 0 и более повторов дефиса или знака подчёркивания, за которыми следует 1 и боле букв/цифр \s*
- 0 и более пробельных символов$
- конец строки.Пример кода:
var strs = ['fdf sdf-sdf-sdf fsd_sd_sdf sd-sd 13', 'dv d_d-dv 1_', 'sdsv d vs_dd 3-'];
var reg = /^[a-zA-Z][a-zA-Z0-9]*(?:[-_][a-zA-Z0-9]+)*(?:\s[a-zA-Z0-9]+(?:[-_][a-zA-Z0-9]+)*)*\s*$/;
for (var s of strs) {
if (reg.test(s)) {
console.log(s, '=>', true)
} else {
console.log(s, '=>', false)
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Делаю небольшую вебморду для управления своим VPN сервером на Flask'е, с js знаком лишь слегка и битый час пытаюсь сделать так, чтобы можно было...
мне нужно по нажатию лкм на выбранный элемент li его удалить, а следующий элемент встал на место удаленного
Когда открываю сайт напрямую, то все хорошо работает(скриншот 1), слайдер исправен, аккордеон открывается, НО как только я открываю сайт через...
Как создать файл css в intellij idea community edition?его просто нету во вкладке добавить