我对使用正则表达式的用户名进行了一些基本验证,例如[\w-_]+
,我希望添加对韩语字母的支持,同时仍然保持验证相同。
我不想允许特殊字符,例如{}[]!@#$%^&*()
等。我只想将\w
替换为与[a-zA-Z0-9]
除了匹配给定字母的内容。
这意味着안녕
这样的用户名应该有效,但不是안녕[]
。
我需要在Ruby 1.9中这样做。
答案 0 :(得分:10)
答案 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.
答案 2 :(得分:3)
我认为您可以\w
[:word:]
/^[[:word:]\-_]+$/
应该有效
答案 3 :(得分:0)
匹配无效字符是你最好的选择,因为有太多有效的韩文字符 - 它在技术上是一个字母表,但计算机化为一个字符的每个音节,另外还有成千上万的中文贷款字符(Hanja)也应该是有效的。