3

私は英語圏以外の市場に「国際化」できるサービスを作成しています。ユーザー名をASCII文字範囲に制限したくありませんが、ユーザーが「自然な」ユーザー名を指定できるようにしたいと思います。OK、UNICODEを使用します(そして、ユーザー名のテキストエンコーディングとしてUTF-8と言います)。

だが!「シンボル」コードポイントを含む「名前以外の」ユーザー名をユーザーに作成させたくありません。たとえば、√√√√√√øøøøøのようなユーザー名を許可したくありません。

特定のユーザー名を受け入れる/拒否するために(おそらく正規表現で)チェックできるUNICODEの「シンボル」コードポイントのリストはありますか?

ありがとう!

4

2 に答える 2

5

Unicodeにはいくつかのカテゴリがあるため、記号を簡単に除外できます。それをどの程度正確に行うかは、使用している言語によって異なります。一部の正規表現フレームワークにはその機能が組み込まれていますが、組み込まれていないものもあります。

于 2009-10-06T15:51:28.737 に答える
0

Pythonの場合(Pythonでの自由形式のUnicodeテキストの入力検証ごと):

def only_letters(s):
    """
    Returns True if the input text consists of letters and ideographs only, False otherwise.
    """
    for c in s:
        cat = unicodedata.category(c)
        # Ll=lowercase, Lu=uppercase, Lo=ideographs
        if cat not in ('Ll','Lu','Lo'):
            return False
    return True

> only_letters('Bzdrężyło')
True
> only_letters('He7lo') # we don't allow digits here
False
于 2017-06-15T17:16:40.287 に答える