如何在Ruby正则表达式中匹配韩语字符?

我对使用正则表达式的用户名进行了一些基本validation,比如[\w-_]+ ,我想添加对韩语字母的支持,同时仍然保持validation相同。

我不想允许特殊字符,例如{}[]!@#$%^&*()等,我只想用除了[a-zA-Z0-9]之外的匹配给定字母的东西替换\w [a-zA-Z0-9]

这意味着像안녕 username这样的用户名应该有效,但不是안녕[]

我需要在Ruby 1.9中这样做。

你可以测试这样的无效字符:

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

试试这个:

[가 – 힣] +

这匹配从U + AC00到U + D7A3的每个角色,这可能足以引起您的兴趣。 (我认为你不需要旧的hangul角色和东西)

我认为你可以用[:word:]替换\w

/^[[:word:]\-_]+$/应该有效

匹配无效字符是你最好的选择,因为有太多有效的韩文字符 – 它在技术上是一个字母表,但计算机化为一个字符的每个音节,另外还有成千上万的中文贷款字符(Hanja)也应该是有效。