Мне нужно поместить курсив вокруг слов, которые заключены между подчеркиванием, как мы делаем здесь для опций формата переполнения стека.
Я легко могу сделать это с помощью этого регулярного выражения /_(.*?)_ / г.Но дело в том, что я не хочу помещать эти теги между адресами электронной почты, URL-адресами и т. Д. Поэтому мне нужно регулярное выражение, которое соответствует курсиву, но не соответствует URL-адресу или шаблону электронной почты.
let urlExp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi;
let boldExp = /\*(.*?)\*/gi;
let italicExp = /\_(.*?)\_/gi;
let bulletedExp = /^\-\s(.*)/gm;
let emailExp = /([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6})/gi;
let modifiedText = text
.replace(urlExp, "<a href='$1' target='_blank'>$1</a>")
.replace(emailExp, '<a href="mailto:$1">$1</a>')
.replace(boldExp, "<strong>$1</strong>")
.replace(italicExp, "<i>$1</i>")
.replace(bulletedExp, "• $1");
return modifiedText;
Вот код, над которым я работаю.Проблема здесь в том, что жирный, курсив и маркеры также применяются к URL-адресам и электронным письмам, мне нужно пропустить эти две вещи.