正则表达式以匹配ASCII符号/数字

时间:2018-10-07 22:20:14

标签: regex

出于某种背景,我在浏览器中使用了单词过滤扩展程序来删除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会被过滤。

这就是我想要做的。

1 个答案:

答案 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)则要求字符串末尾或空白紧跟在在当前位置的右边。