gpt4 book ai didi

javascript - 如何修复此正则表达式以使其正确替换 *(在单词之间)?

转载 作者:行者123 更新时间:2023-11-29 17:41:50 24 4
gpt4 key购买 nike

我正在练习正则表达式。我想创建转 * 的正则表达式进入<em> ,就像 Markdown 一样:

el = el.replace(/\*\b/g, '<em>')
el = el.replace(/\b\*|(\.|\,|\?|\!|\*|---|\.\.\.\s)\*/g, '$1</em>')

这在大多数情况下都有效。但是,如果您将正则表达式应用于此,事情会变得一团糟:

Chicken teriy*ai*ki, r*ai*men noodles, spaghetti a la moneg*ai*sque.

它产生这个:

Chicken teriy<em>ai<em>ki, r<em>ai<em>men noodles, spaghetti a la moneg<em>ai<em>sque. And wait for me, often falling asleep.</em></em></em></em></em></em>

如何修改此正则表达式以使其生成如下内容:

 Chicken teriy<em>ai</em>ki, r<em>ai</em>men noodles, spaghetti a la moneg<em>ai</em>sque. And wait for me, often falling asleep.

最佳答案

您可以在第二个正则表达式中合并这两个分支,因为它们都以 \* 模式结尾,例如 (\b|\.|,|\?|!|\*|- --|\.{3}\s)\*(您甚至可以将 \.|,|\?|!|\* 单个字符替代项合并到 [ .,?!*]), 然后使用

var s = "Chicken teriy*ai*ki, r*ai*men noodles, spaghetti a la moneg*ai*sque.";
console.log(
s.replace(/\*\b([^]*?)(\b|[.,?!*]|---|\.{3}\s)\*/g, '<em>$1$2</em>')
)

详情

  • \*\b - * 后跟字符字符(字母、数字或 _)
  • ([^]*?) - 第 1 组:任何 0+ 个字符,尽可能少(可以替换为 [\s\S]/[\d\D]/[\w\W] 如果您需要更多的可移植性),直到最左边出现
  • (\b|[.,?!*]|---|\.{3}\s) - 字边界,. ,, ?, !, *, ---, ... + 空格
  • \* - * 字符。

关于javascript - 如何修复此正则表达式以使其正确替换 *(在单词之间)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52621034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com