как сопоставить число с буквой непосредственно после или до

#javascript #regex #string #numbers #regression

Вопрос:

 const input = "2a smith road ";

const input 2 = "333 flathead lake road, apartment 3b"

const address = input.replace(/(^w{1})|(s w{1})/g, letter => letter.toUpperCase());
 

Вывод должен выглядеть следующим образом:

 input = "2A Smith Road"

input = "333 Flathead Lake Road, Apartment 3B"
 

Комментарии:

1. Не /d[a-zA-Z]/g работает?

Ответ №1:

Я думаю, что поиск символа слова ( w ), которому предшествует ( (?<=...) ) граница слова ( b ) и необязательные цифры ( d* ) должны охватывать все случаи:

 const input = [
  "2a smith road",
  "333 flathead lake road, apartment 3b"
];

const capitalize = (s) => s.replace(/(?<=bd*)(w)/g, l => l.toUpperCase());

input.forEach(s => console.log(capitalize(s))) 

Ответ №2:

Вы можете сопоставить 1 или более цифр, за которыми следует символ в нижнем регистре bd [a-z]b и прописные буквы всего совпадения

 [
  "2a smith road",
  "333 flathead lake road, apartment 3b"
].forEach(s => console.log(s.replace(/bd [a-z]b/g, m => m.toUpperCase())));