我使用正则表达式对用户名进行了一些基本验证,例如[\w-_]+
,我想添加对韩文字母的支持,同时仍然保持验证相同。
我不想允许特殊字符,例如{}[]!@#$%^&*()
等,我只想\w
用与给定字母表匹配的东西替换[a-zA-Z0-9]
.
这意味着 username like안녕
应该是有效的,但不是안녕[]
.
我需要在 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.
我认为你可以替换\w
为[:word:]
/^[[:word:]\-_]+$/
应该管用
匹配无效字符是您的最佳选择,因为有效的韩语字符太多了 - 从技术上讲,它是一个字母表,但计算机化为每个音节一个字符,此外还有数千个中文借用字符(汉字)也应该是有效的。