我尝试从字符串中删除所有表情符号字符,下面的代码工作正常,但它也删除了非英文字符,我该如何避免这种情况?
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,''));
});
关于javascript - 删除表情符号但不删除非英文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48764875/