0

私はこの文字列を持っています:"asdf" そして、それはこの正規表現によって認識されません: ^[\p{L}]{3,32}$. 私の知る限り、 は\p{L}どのユニコード文字にも一致するはずです。なぜそうしないのですか?A-Za-z に置き換えると正常に動作しますが、Unicode 文字が必要です。どうすればこれを修正できますか?

4

1 に答える 1

0
// [\p{L}]{3,32}

// A character with the Unicode property “letter” (any kind of letter from any language) «[\p{L}]{3,32}» Between 3 and 32 times, as many times as possible, giving back as needed (greedy) «{3,32}»

定義上、 :"はどの言語の文字でもありません!

この正規表現を試してください:^"[\p{L}]{3,32}"$

using System;
using System.Text.RegularExpressions;

public class Test
{
    public static void Main()
    {
        Console.WriteLine(Regex.IsMatch("\"asdf\"", "^\"[\\p{L}]{3,32}\"$"));  //True
    }
}
于 2013-02-07T21:27:19.820 に答える