我想使用Regex将表情符号限制在u2600 -u26FF范围的文本框中。
我试过这个,但失败了。
private static readonly Regex regexEmoji = new Regex(@"[\u1F600-\u1F6FF]|[\u2600-\u26FF]");
我想限制用户在 WP8 中添加表情符号
我想使用Regex将表情符号限制在u2600 -u26FF范围的文本框中。
我试过这个,但失败了。
private static readonly Regex regexEmoji = new Regex(@"[\u1F600-\u1F6FF]|[\u2600-\u26FF]");
我想限制用户在 WP8 中添加表情符号
因为 .NET 不支持正则表达式中的代理对。您必须手动分解它们。为了清楚起见,char
.NET 中的 a 是 16 位,但1F600
需要两个char
. 所以解决方案是“手动”分解它们。
private static readonly Regex regexEmoji = new Regex(@"\uD83D[\uDE00-\uDEFF]|[\u2600-\u26FF]");
我希望我已经正确地分解了它们。
我用这个网站:http ://www.trigeminal.com/16to32AndBack.asp
分解低和高范围\u1F600 == \uD83D \uDE00
,\u1F6FF == \uD83D \uDEFF
. 代理对的第一部分是“固定的”:\uD83D
,另一部分是范围。
示例代码(http://ideone.com/0o6qbt)
string str = "Hello world ☀⛿"; // 1F600 GRINNING FACE, 1F64F PERSON WITH FOLDED HANDS, 2600 BLACK SUN WITH RAYS, 26FF WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
Regex regexEmoji = new Regex(@"\uD83D[\uDE00-\uDEFF]|[\u2600-\u26FF]");
MatchCollection matches = regexEmoji.Matches(str);
int count = matches.Count;
Console.WriteLine(count);
如果你想要范围1F300-1F6FF
......它是D83C DF00
toD83C DFFF
和D83D uDC00
toD83D DEFF
string str = "Hello world ☀⛿"; // 1F300 CYCLONE, 1F600 GRINNING FACE, 1F64F PERSON WITH FOLDED HANDS, 2600 BLACK SUN WITH RAYS, 26FF WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
Regex regexEmoji = new Regex(@"\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDEFF]|[\u2600-\u26FF]");