我正在建立聊天,我想在仅包含表情符号的情况下增加文本的字体大小
因此,我们拥有与所有表情符号匹配的正则表达式。 https://www.regextester.com/106421
我将其移至JS函数中,但有一些函数未返回true
(即使它们在上述Regex链接中匹配)。
var emojiRanges = [
'\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]',
' ',
].join('|')
function isEmojiOnly(text) {
text = text.replace(new RegExp(emojiRanges, 'g'), '')
return text.length === 0
}
console.log(isEmojiOnly('??????')) // returns true
console.log(isEmojiOnly('?????????????')) // returns true
console.log(isEmojiOnly('?️')) // returns false
console.log(isEmojiOnly('☘️')) // returns false
在Facebook Messenger上效果很好
有什么主意吗? =)
答案 0 :(得分:2)
这是一个稍大的正则表达式,但只能匹配表情符号或空格。
this.setState({
overallDetails: [
...this.state.overallDetails,
...details.map(detail => ({
...detail,
test: "test"
}))
],
答案 1 :(得分:1)
可接受的答案有效,但是很脏。
主要的浏览器现在支持unicode property escape,该功能允许根据其在Emoji
unicode类别中的归属来匹配表情符号:\p{Emoji}
匹配表情符号,P{Emoji}
匹配非表情符号。确保在末尾包含the u
flag。
const isOnlyEmojis = str => /^\p{Emoji}*$/gu.test(str);
console.log(isOnlyEmojis('?')); // true
console.log(isOnlyEmojis('???')); // true
console.log(isOnlyEmojis('hello ?')); // false
console.log(isOnlyEmojis('hello')); // false