检查字符串是否仅包含表情符号 - Javascript



我想检查字符串是否只包含表情符号,它不应该有字母、数字或特殊字符。

它在一个表情符号

上工作正常,但对于两个以上的表情符号,它返回 false,请查看代码片段。

var emoji_regex = /^(?:[u2700-u27bf]|(?:ud83c[udde6-uddff]){2}|[ud800-udbff][udc00-udfff]|[u0023-u0039]ufe0f?u20e3|u3299|u3297|u303d|u3030|u24c2|ud83c[udd70-udd71]|ud83c[udd7e-udd7f]|ud83cudd8e|ud83c[udd91-udd9a]|ud83c[udde6-uddff]|[ud83c[ude01-ude02]|ud83cude1a|ud83cude2f|[ud83c[ude32-ude3a]|[ud83c[ude50-ude51]|u203c|u2049|[u25aa-u25ab]|u25b6|u25c0|[u25fb-u25fe]|u00a9|u00ae|u2122|u2139|ud83cudc04|[u2600-u26FF]|u2b05|u2b06|u2b07|u2b1b|u2b1c|u2b50|u2b55|u231a|u231b|u2328|u23cf|[u23e9-u23f3]|[u23f8-u23fa]|ud83cudccf|u2934|u2935|[u2190-u21ff])$/;
const emo_test = str => console.log(emoji_regex.test(str));
emo_test("😎"); //true
emo_test("hello😎"); //false
emo_test("😎9034😍😍"); //false
emo_test("😎$z5😍##😍"); //false
emo_test("😎😃😃"); //true

对于最后一个,它只包含表情符号,所以应该返回true但它正在返回false,有什么解决方案吗?

您需要在正则表达式中$之前添加+*。 如下所示。

var emoji_regex = /^(?:[u2700-u27bf]|(?:ud83c[udde6-uddff]){2}|[ud800-udbff][udc00-udfff]|[u0023-u0039]ufe0f?u20e3|u3299|u3297|u303d|u3030|u24c2|ud83c[udd70-udd71]|ud83c[udd7e-udd7f]|ud83cudd8e|ud83c[udd91-udd9a]|ud83c[udde6-uddff]|[ud83c[ude01-ude02]|ud83cude1a|ud83cude2f|[ud83c[ude32-ude3a]|[ud83c[ude50-ude51]|u203c|u2049|[u25aa-u25ab]|u25b6|u25c0|[u25fb-u25fe]|u00a9|u00ae|u2122|u2139|ud83cudc04|[u2600-u26FF]|u2b05|u2b06|u2b07|u2b1b|u2b1c|u2b50|u2b55|u231a|u231b|u2328|u23cf|[u23e9-u23f3]|[u23f8-u23fa]|ud83cudccf|u2934|u2935|[u2190-u21ff])+$/;
const emo_test = str => console.log(emoji_regex.test(str));
emo_test("😎"); //true
emo_test("hello😎"); //false
emo_test("😎9034😍😍"); //false
emo_test("😎$z5😍##😍"); //false
emo_test("😎😃😃"); //true

最新更新