@DanilkaEs6

Как найти общие совпадения двух регулярных выражений?

Здравствуйте.
Представьте, что у нас есть строка:

const text = 'hemidemisemiquaver';

Так же у нас есть две маски:

const s1 = 'emi';
const s2 = 'm.se';

Совпадения первой маски, должны быть курсивом, а второй жирным шрифтом.
Так же нужно учесть, что если совпадение будет относится к первой и второй одновременно, то данное совпадение, должно иметь оба стиля.
В данном примере будет так hemidemisemiquaver
Вообщем всю голову сломал, а реализовать не получается.
Помогите идеей или примером кода, пожалуйста)
  • Вопрос задан
  • 118 просмотров
Пригласить эксперта
Ответы на вопрос 4
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
в php есть similar_text и soundex, поищи аналоги для js.
Вычисляет степень похожести двух строк по алгоритму, описанному в Programming Classics: Implementing the World's Best Algorithms by Oliver (ISBN 0-131-00413-1).
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Общих - быть не может.
Т.к. будет нарушение корректности тега, например: <b><i>общее</b></i>
Вы решаете: в какой последовательности Вы делаете добавление тегов: вначале курсив, затем жирным или наоборот.
При выполнении 2-го шага - делаете операцию уже над ТОКЕНАМИ (без тегов), полученных на 1-м шаге, а не над первоначальной строкой, чтобы избежать пересечений при тегировании (как в примере выше).
Ответ написан
@timokins
Идея за 5 минут, не претендую на красоту исполнения и отсутствие велосипеда:

создаете новую переменную text_html, в которой каждая буква из text будет завернута в тег
let text_html = '<span>h</span><span>e</span> ... <span>r</span>';
// создаете её программно, естественно, работая с DOM

далее ищите нахождение масок в исходном text и получаете индексы и длину,
по полученным индексам и длине обращаетесь к text_html, находите нужные элементы и проставляете им стили

после с text_html делаете, что хотите
можно привести в порядок убрав лишние span

как-то так
Ответ написан
@niriter
User
через это нельзя? или я что то попутал?)))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы