dotnet/runtime
Regex incorrectly identify surrogate pair unicode category
Aperta
#16.922 aperta il 7 apr 2016
area-System.Text.RegularExpressionsbughelp wanted
Metriche repository
- Star
- (17.886 stelle)
- Metriche merge PR
- (Merge medio 12g 11h) (661 PR mergiate in 30 g)
Descrizione
This defect makes regex useless when you need to match string using unicode categories and string could contain surrogate pairs:
[Test]
public void ClassifySurrogates_Test()
{
var value = "𦕒";
var regexLetters = new Regex(@"^\p{Lo}$");
var regexSurrogates = new Regex(@"^\p{Cs}{2}$");
Assert.AreEqual(UnicodeCategory.OtherLetter, char.GetUnicodeCategory(value, 0));
Assert.AreEqual(UnicodeCategory.OtherLetter, CharUnicodeInfo.GetUnicodeCategory(value, 0));
Assert.True(regexSurrogates.IsMatch(value));
// Fails here
Assert.True(regexLetters.IsMatch(value));
}