我试图从字符串中移除所有表情符号字符,以下代码工作正常,除了它也删除非英文字符,我该如何避免这种情况?
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"/>
用于测试的示例表情符号:⛔️ 非英语示例:آ
答案 0 :(得分:1)
这是一个具有广泛字符范围的单一模式:
/[^ -\u2122]+ +| *[^ -\u2122]+/ug
我的方法基本上来自这个php答案:https://stackoverflow.com/a/43106144/2943403
它会在一侧删除一个或多个表情符号(但不是两个)。
$('#submit').on('click', function() {
$("#after").html($('#before').val().replace(/[^ -\u2122]+ +| *[^ -\u2122]+/ug,''));
});
&#13;
<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>
&#13;
我会为那些对我的回答有疑问/担忧的人添加更新:
这是另一种正则表达式模式声明,模式本身可以扩展为包含ascii表中较低的字符(包括换行符):
$('#submit').on('click', function() {
var r = new RegExp(/[^\u0000-\u2122]+ +| *[^\u0000-\u2122]+/, "ug");
$("#after").html($('#before').val().replace(r,''));
});