7
votes

Comment puis-je correspondre aux personnages coréens dans une expression régulière de rubis?

J'ai quelques validations de base pour les noms d'utilisateur à l'aide d'expressions régulières, quelque chose comme [\ w -_] + , et je souhaite ajouter de la prise en charge de l'alphabet coréen tout en conservant la validation de la même manière. < / p>

Je ne veux pas autoriser des caractères spéciaux, tels que {} []! @ # $% ^ & * () etc., je veux juste remplacer le \ w avec quelque chose qui correspond à un alphabet donné en plus de [A-ZA-Z0-9] .

ce qui signifie que le nom d'utilisateur comme 안녕 doit être valide, mais pas 안녕 [] . .

J'ai besoin de le faire dans Ruby 1.9.


0 commentaires

4 Réponses :


3
votes

Je pense que vous pouvez remplacer \ w par [: mot:]

/ ^ [[[[: mot:] \ -_] + $ / devrait fonctionner


1 commentaires

Cependant, cela correspondrait à tous les caractères de mots.



11
votes

Vous pouvez tester des caractères non valides comme celui-ci:

#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.


5 commentaires

Voir ci-dessous - vous devriez étendre votre regex à / [^ a-za-z0-9 \ p {hanvul} \ p {han}] / afin de capturer également des noms comme 姓. En outre, cette regex ne supporte toujours pas les noms avec des tirets en eux, comme si jeune Kim.


La question demande le caractère coréen / alphabet. Les noms coréens avec des personnages chinois sont nouveaux pour moi. Mais l'OP fait référence aux noms d'utilisateur, pas de vrais noms, et je suppose qu'il définit les règles.


\ P {Han} est commun à coréen, japonais et chinois. Presque tous les noms coréens étaient écrits à Hanja et ils sont toujours courants sur les cartes de visite. Ils sont moins fréquents sur le net, mais il est mauvais pour les entreprises de dire aux gens que leur nom de passeport n'est pas un nom valide. Voir aussi KALZUMEUS.COM/2010/06/17 / ...


@SprachProfi j'ai aimé le lien; Aussi 23780f''Asdf [Commentaire Qwerioafbh.


@SprachProfi Non, Hanja n'est pas couramment utilisé pour écrire des noms en coréen ... 는 는 샘.



0
votes

correspondant à des caractères non valides est votre meilleure option, car il y a beaucoup trop de caractères coréens valides - il est techniquement un alphabet mais informatisé comme une syllabe d'un caractère, et il y a en outre des milliers de personnages de prêt chinois (Hanja) qui devrait également être valide.


5 commentaires

La liste est finie et facilement assortie. Et \ p {hanvlul} est un bloc de regex valide


\ p {hangul} ne capture pas Hanja, mais Hanja est toujours couramment utilisé pour écrire des noms. Au moins, vous devez vérifier à la fois \ p {hanvul} et \ p {han}.


Malheureusement, les personnages chinois ne sont plus jamais utilisés en coréen, même en indiquant les noms ...


Voulez-vous vraiment exclure de véritables clients coréens simplement parce qu'ils ont un nom traditionnel? L'utilisation de Hanja est toujours minimisée pour les étrangers, mais si vous allez à une conférence en Corée, de nombreuses cartes de visite présentent toujours Hanja.


Les cartes de visite sont probablement la dernière place (avec des cartes d'identité) où vous voyez des caractères chinois (et j'ai des milliers d'entre eux qui ne montrent plus de Chinois). J'ai passé les 25 dernières années, dont 15 passées en Corée, regarder des personnages chinois disparaître. Malheureusement, personne n'utilise des personnages chinois - surtout en ligne ...



16
votes

Essayez ceci:

[가 - 힣] +

Ceci correspond à tous les caractères de U + AC00 à U + D7A3 , qui est probablement assez pour votre intérêt. (Je ne pense pas que vous auriez besoin de vieux personnages de suspension et de choses)


0 commentaires