J'ai quelques validations de base pour les noms d'utilisateur à l'aide d'expressions régulières, quelque chose comme Je ne veux pas autoriser des caractères spéciaux, tels que ce qui signifie que le nom d'utilisateur comme J'ai besoin de le faire dans Ruby 1.9. P> [\ w -_] + code>, 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>
{} []! @ # $% ^ & * () code> etc., je veux juste remplacer le
\ w code> avec quelque chose qui correspond à un alphabet donné en plus de
[A-ZA-Z0-9] code>. P>
안녕 code> doit être valide, mais pas
안녕 [] code>. p>.
4 Réponses :
Je pense que vous pouvez remplacer \ w code> par
[: mot:] code> p> p>
/ ^ [[[[: mot:] \ -_] + $ / code> devrait fonctionner p>
Cependant, cela correspondrait à tous les caractères de mots.
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.
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 ... 는 는 샘.
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. p>
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 ...
Essayez ceci: p>
[가 - 힣] + p>
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) p>