javascript - 删除表情符号但不删除非英文字符

标签 javascript jquery

我尝试从字符串中删除所有表情符号字符,下面的代码工作正常,但它也删除了非英文字符,我该如何避免这种情况?

var ranges = [
  '[\u00A0-\u269f]',
  '[\u26A0-\u329f]',
  '[🀄-🧀]'
];


$('#submit').on('click', function() {
  var str = $('#text').val();
  str = str.replace(new RegExp(ranges.join('|'), 'ug'), '');
  $("#text").val(str);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="text"/>
<input type="submit" id="submit" value="clear"/>

测试表情符号示例:⛔️🚨 示例非英语:â

最佳答案

这是一个具有广泛字符范围的单一模式:

/[^ -\u2122]+ +| *[^ -\u2122]+/ug

我的方法基本上是从这个 php 答案移植而来的:https://stackoverflow.com/a/43106144/2943403

它将一次删除一个或多个表情符号的时间和一侧的空格字符(但不是两侧)。

$('#submit').on('click', function() {
  $("#after").html($('#before').val().replace(/[^ -\u2122]+ +| *[^ -\u2122]+/ug,''));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="before" cols="75" rows="5">Sample emoji for test: ⛔️🚨 Sample non english: آ Kilian à Dijon #4 • Vlog #2 • Primark again !? 🎬 - YouTube Funfesty 🎧 🎬 on Twitter: "Je commence à avoir mal à la tête à force Sia 2017 Cheap Thrills 2017 live 🎧🎬</textarea><br>
<input type="submit" id="submit" value="Remove Emojis"/><br>
<textarea id="after" cols="75" rows="5"></textarea>


我会为那些对我的回答有问题/疑虑的人添加更新:

这是一个替代的正则表达式模式声明,模式本身可以扩展以包含 ascii 表中较低的字符(包括换行符):

$('#submit').on('click', function() {
  var r = new RegExp(/[^\u0000-\u2122]+ +| *[^\u0000-\u2122]+/, "ug");
  $("#after").html($('#before').val().replace(r,''));
});

JSFiddle Demo

关于javascript - 删除表情符号但不删除非英文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48764875/

相关文章:

javascript - 只显示一次 div

jquery - 在更改背景图像位置时避免看到 'scroll effect' 的技术

javascript - 如果属性为显示 :none;?,则禁用表行

javascript - Symfony2 收集字段,用于发送电子邮件的简单列表

javascript - 使用 'dd-slick' jQuery 插件样式化链接下拉列表会破坏数据的自动更新

javascript - 通过 javascript 按 Bing 的 "See more images button"

javascript - MVC 更改 html 帮助程序类型

javascript - 如何在 Three.js 中使用 morphColor 更改动画的面/顶点颜色

javascript - 使用复杂的对象/数组作为关键工作 "as expected"吗?

javascript - 如何在 blueimp jquery 下载程序中过滤要下载的文件