删除术语但保留真实角色

时间:2011-04-10 03:07:01

标签: javascript html

我被垃圾邮件轰炸了下面的帖子,所以最好和最有效的方法是删除所有这些术语:

<texarea id="comment">ȑ̉̽ͧ̔͆ͦ̊͛̿͗҉̷̢̧̫̗̗͎͈͕e̷̪͓̼̼̣̻̻͙͔̳̘̗͙̬̱͎ͭ̃͗ͩͯͥͬ̂ͧ͐͌̑̅͢͜ͅd̴̦̺̖̣͎̲̥͕̗̺̯̤͗ͬ͌ͧ̓͒ͭ́̋ͩͥ͊̇̓̌ͫ̃́́͠</textarea>

我正在假设RegEx,但这些内容究竟是什么以及如何在RegExp中引用?该问题存在于<textarea>标记内,并且在检索该值时,我希望能够从该值中删除所有该术语,并使其仅显示真实字符,在这种情况下应为{{1 }}

允许其他Unicode类型的字符是必不可少的,但不是相互叠加的字符。

2 个答案:

答案 0 :(得分:4)

Zalgo在墙后等待。

您希望过滤掉组合字符,例如列出here的变音标记。

您应该可以使用简单的字符类模式匹配,

fooString.replace(/[\u0300-\u036f\u0483-\u0489\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]/, "");

如果你想将内容限制为每个角色一个组合(不是这确实减轻了所有负面副作用),你可以简单地使用

fooString.replace(/([\u0300-\u036f\u0483-\u0489\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f])[\u0300-\u036f\u0483-\u0489\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]*/, "$1");

编辑:添加了许多其他组合字符范围。这很可能仍然不详尽。

答案 1 :(得分:3)

删除组合变音符会使某些语言(例如越南语)的输入变得困难或不可能,因此您应该重新考虑。