8

のような正規表現を使用したユーザー名の基本的な検証がいくつかあり[\w-_]+ます。検証を同じに保ちながら、韓国語のアルファベットのサポートを追加したいと考えています。

などの特殊文字を許可したくありません。に加えて、 を特定のアルファベットに一致するもの{}[]!@#$%^&*()に置き換えたいだけです。\w[a-zA-Z0-9]

つまり、ようなユーザー名안녕は有効である必要がありますが、안녕[].

Ruby 1.9でこれを行う必要があります。

4

4 に答える 4

16

これを試して:

[가-힣]+

これは、 U+AC00 から U+D7A3 までのすべての文字に一致します。おそらく、これで十分です。(古いハングル文字などは必要ないと思います)

于 2014-02-21T10:45:45.180 に答える
11

次のような無効な文字をテストできます。

#encoding: utf-8
def valid_name?(name)
  !name.match(/[^a-zA-Z0-9\p{Hangul}]/)
end

ar = %w(안녕 name 안녕[].)
ar.each{|name| puts "#{name} is #{valid_name?(name) ? "valid" : "invalid"}."}
# 안녕 is valid.
# name is valid.
# 안녕[]. is invalid.
于 2012-04-13T12:47:56.400 に答える
3

私はあなたが置き換えることができると思い\wます[:word:]

/^[[:word:]\-_]+$/動作するはずです

于 2012-04-13T11:45:24.717 に答える
0

有効な韓国語の文字が多すぎるため、無効な文字の照合が最適なオプションです。技術的にはアルファベットですが、音節ごとに 1 文字としてコンピューター化されています。有効。

于 2012-04-14T11:51:06.403 に答える