使用正则表达式从字符串中删除逗号和空标记

时间:2013-08-21 12:17:43

标签: regex coldfusion

我试图在使用一些例程和外部服务(akismet)发布之前过滤掉垃圾邮件,但是当推入逗号分隔的单词或用空标签形成的单词时,它们似乎都失败了。例如

b [u] [/ u] u [u] [/ u] y [i] [/ i] m [b] [/ b] e< - > buyme

b,u,y,m,e< - > buyme

有没有人知道一个好的ColdFusion正则表达式,在我将它发布到aksimet进行处理之前去掉这种行为?

1 个答案:

答案 0 :(得分:0)

首先:您是否检查过Akismet是否还没有这样做?

我非常怀疑它已经完成了所有这些处理(以及更多),因此您实际上并不需要。


无论如何,假设这是bbcode,因此相关标签将用于粗体/斜体/下划线,您可以将它们替换为:

TextForAkismet = rereplace( TextForAkismet , '\[([biu])\]\[/\1\]' , '' , 'all' )

如果您要删除其他空标记,只需根据需要更新捕获的组(括号中的位)。为了满足潜在的属性(但仍然是空标记),快速而肮脏的方法是在标记名称之后(在捕获的组之外)使用[^\]]*

'\[([biu]|img|url)[^\]]*\]\[/\1\]'

根据您正在使用的bbcode的方言,您可能需要处理需要更复杂表达的引用括号。


要删除字母之间出现的逗号,请使用:

TextForAkismet = rereplace( TextForAkismet , '\b,\b' , '' , 'all' )

(其中\b匹配字母数字和非字母数字之间的任何位置。)