Вы можете использовать несколько решений в зависимости от того, что вам действительно нужно.
Для текущего сценария вы можете сопоставить блок из 1+ букв ASCII
let letter = ' <section class="contact" id="contact">';
let first_word = (letter.match(/[a-z]+/i) || [""])[0];
console.log(first_word)
Вы можете указать обработчику регулярных выражений совпадать с ним только в том случае, если вокруг него нет цифр или подчеркиваний, используя \b
, границы слов:
/\b[a-z]+\b/i
И если вы хотите сопоставить любое слово буквы Юникода и цель ECMAScript 2018 и новее, вы можете использовать
let regex = /\p{Alphabetic}+/u;
console.log("Один,два".match(regex)[0]); // => Один
Или, с границами слов Unicode,
let regex = /(?<![\p{Alphabetic}\p{N}])\p{Alphabetic}+(?![\p{Alphabetic}\p{N}])/u;
console.log("1Один2,два-три".match(regex)[0]); // => два
То есть для сопоставления 1+ буквенных символов, которым не предшествуют и не следуют буквы или цифры.