我被垃圾邮件轰炸了下面的帖子,所以最好和最有效的方法是删除所有这些术语:
<texarea id="comment">ȑ̉̽ͧ̔͆ͦ̊͛̿͗҉̷̢̧̫̗̗͎͈͕e̷̪͓̼̼̣̻̻͙͔̳̘̗͙̬̱͎ͭ̃͗ͩͯͥͬ̂ͧ͐͌̑̅͢͜ͅd̴̦̺̖̣͎̲̥͕̗̺̯̤͗ͬ͌ͧ̓͒ͭ́̋ͩͥ͊̇̓̌ͫ̃́́͠</textarea>
我正在假设RegEx,但这些内容究竟是什么以及如何在RegExp中引用?该问题存在于<textarea>
标记内,并且在检索该值时,我希望能够从该值中删除所有该术语,并使其仅显示真实字符,在这种情况下应为{{1 }}
允许其他Unicode类型的字符是必不可少的,但不是相互叠加的字符。
答案 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)
删除组合变音符会使某些语言(例如越南语)的输入变得困难或不可能,因此您应该重新考虑。