出于某种背景,我在浏览器中使用了单词过滤扩展程序来删除ASCII表情符号,并且它接受Regex,但是我在获取仅过滤表情符号的正确公式方面遇到了麻烦。我已经尝试过各种方法,但是似乎没有一种方法能正确解决问题。
例如,尝试过滤“:3”,我尝试过诸如/(:3)/ i,/(\ b:3 \ b)/ i,甚至是/ ^:3 \ s | \ s:3 \ s | \ s:3 $ / i,但是每个都有自己的问题。第一个过滤器:3无论如何,即使它是另一个词/短语的一部分,第二个过滤器似乎也根本不起作用,而第三个过滤器似乎仅在:3的AND后面有空格时才起作用。
因此,如果输入类似:
text:3text
:3
文本:3
第一行不会受到影响,但是第二和第三行中的:3会被过滤。
这就是我想要做的。
答案 0 :(得分:0)
在非单词char之前使用\b
单词边界时,要求在该char之前有一个单词char。 /\b:3\b/i
中的text :3
与:
之前的空格不是单词char。
在这种情况下,您应该使用\B
(无字边界):
/\B:3\b/
请参见regex demo。
如果您打算仅在空白之间进行匹配,请使用/(?:^|\s):3(?!\S)/m
,其中(?:^|\s)
与行或空白的开头相匹配,而(?!\S)
则要求字符串末尾或空白紧跟在在当前位置的右边。