Это не первый вопрос по этой проблеме, но я не смог найти решение для своего случая.
Я пытаюсь выбрать символ или группу символов только в том случае, если им не предшествует алфавит c символ. Пример:
Это пример (простое предложение из https://aniceone.com)
Мне нужно сопоставить букву "а" от " an "," (a "и" https://aniceone.com ".
Следующее выражение работает в Chrome, но в Firefox, поэтому мне нужна альтернатива.
new RegExp(`((?<!\\w)${query})`, "gi")
Обратите внимание, что содержимое для сопоставления поступает динамически. Здесь вы можете увидеть всю функцию (к вашему сведению, я пытаюсь выделить текст из поискового запроса):
const getHighlightedText = (item, query) => {
const escapedQuery = query.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
const parts = item.split(new RegExp(`((?<!\\w)${escapedQuery})`, "gi"));
return (
<React.Fragment>
{parts.map((part, ind) => (
<span
key={ind}
style={
part.toLowerCase() === query.toLowerCase()
? { fontWeight: "bold", backgroundColor: "#eeff00" }
: {}
}
>
{part}
</span>
))}
</React.Fragment>
);
};