2016-11-08 104 views
0

此函數當前使用正則表達式從字符串中刪除所有表情符號字符。我該如何反轉這一點,以便除去表情符號中的所有字符?如何從字符串中除去表情符號中的所有字符

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>

+1

嘗試'STR = str.replace(新正則表達式( 「(」 + ranges.join( '|')+ 「)|。」, 'G'), '$ 1' );'。或者,爲了保護標籤,'str = str.replace(new RegExp(「(<[^<]*?> |」+ ranges.join('|')+「)|。」,'g'),'$ 1');' –

+0

這就是一個很好的答案,@WiktorStribiżew - 你應該把它作爲一個! – Bill

回答

0

只是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>

相關問題