如何从字符串中除去表情符号中的所有字符
问题描述:
此函数当前使用正则表达式从字符串中删除所有表情符号字符。我该如何反转这一点,以便除去表情符号中的所有字符?如何从字符串中除去表情符号中的所有字符
var ranges = [
'\ud83c[\udf00-\udfff]', // U+1F300 to U+1F3FF
'\ud83d[\udc00-\ude4f]', // U+1F400 to U+1F64F
'\ud83d[\ude80-\udeff]' // U+1F680 to U+1F6FF
];
function removeEmoji() {
var str = $('#emoji').html();
str = str.replace(new RegExp(ranges.join('|'), 'g'), '');
$("#emoji").html(str);
}
$('button').on('click', function() {
removeEmoji();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="emoji">
<li></li>
<li>or Smiling Face</li>
<li>or Smiling Face</li>
<li>or Smiling Face</li>
<li></li>
<li>or Smiling Face</li>
<li>or Smiling Face</li>
<li>or Smiling Face</li>
</ul>
<button>Push Me</button>
答
只是str.match()
取代str.replace()
!
请注意,我已从您的答案中复制了此代码段,并且它正在获取并替换整个<ul>
的html。这包括<li>
元素。
var ranges = [
'\ud83c[\udf00-\udfff]', // U+1F300 to U+1F3FF
'\ud83d[\udc00-\ude4f]', // U+1F400 to U+1F64F
'\ud83d[\ude80-\udeff]' // U+1F680 to U+1F6FF
];
function removeEmoji() {
var str = $('#emoji').html();
str = str.match(new RegExp(ranges.join('|'), 'g'), '');
$("#emoji").html(str);
}
$('button').on('click', function() {
removeEmoji();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="emoji">
<li></li>
<li>or Smiling Face</li>
<li>or Smiling Face</li>
<li>or Smiling Face</li>
<li></li>
<li>or Smiling Face</li>
<li>or Smiling Face</li>
<li>or Smiling Face</li>
</ul>
<button>Push Me</button>
尝试'STR = str.replace(新正则表达式( “(” + ranges.join( '|')+ “)|。”, 'G'), '$ 1' );'。或者,为了保护标签,'str = str.replace(new RegExp(“( |”+ ranges.join('|')+“)|。”,'g'),'$ 1');' –
这就是一个很好的答案,@WiktorStribiżew - 你应该把它作为一个! – Bill