gpt4 book ai didi

javascript - 找到所有没有被任何字符包围的 ":)"

转载 作者:行者123 更新时间:2023-11-29 10:13:50 25 4
gpt4 key购买 nike

我正在尝试将所有“:)”(不带引号)更改为图片。要进行匹配,笑脸符号必须由空格包围(或者位于字符串的开头或结尾)。

我的尝试:/(?:^|\s)\:\)(?:$|\s)/g

if a smiley is (at the beginning of a string or has a white-space before it) and (is at the end of a string or has a white-space after it);

像这样的字符串可以正常工作:“:) x :) x :)”但这样的字符串不会:“:) :) :) :)”(每秒笑脸都会改变)。

据我所知,第一个笑脸与其后的空格匹配,下一个笑脸既不在字符串的开头也不再有空格。我是正则表达式的新手,不知道如何修正我的逻辑:)

附言也许有一条捷径可以找到一个没有被任何字符包围的模式? (\b\B 不适用于此)

最佳答案

正则表达式如何

(?:\s|^):\)(?=\s|$)

示例:http://regex101.com/r/zY9xA3/2

/(?:^|\s)\:\)(?:$|\s)/g 有问题

  • :) 之后的 \s 被正则表达式引擎使用,对于第二个 :) 我们不能有一个前面的 \s

解决方案

使用积极的前瞻,这样正则表达式就不会占用后面的空间。

  • (?=\s|$) 前瞻断言 :) 后跟空格或字符串结尾。但不会消耗 Angular 色。

所做的更改

  • \:: 你不需要转义 :

  • (?:$|\s) 非捕获组到正向预测 (?=\s|$)

关于javascript - 找到所有没有被任何字符包围的 ":)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27170481/

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