日本的全角,半角正则匹配
1.在lib中建立一个文件:string_util.rb,定义以下内容:
class String
# 半角字符串
# 【引数】
# 【返値】
# 【注意】
# 【著作】20100518 xxc
def self.hankaku?(str)
return nil if str.nil? #文字列が空のとき
unless str.to_s =~ /^[ -~?-?]*$/ # 半角のみOKなので、全角が混ざっているとfalseが返る
return false
end
return true
end
# 全角字符串
# 【引数】
# 【返値】
# 【注意】
# 【著作】20100518 xxc
def self.zenkaku?(str)
return nil if str.nil? # 文字列が空のとき
unless str.to_s =~/^[^ -~?-?]*$/ # 全角のみOKなので、半角が混ざっているとfalseが返る
return false
end
return true
end
end
2.在environment.rb中: require 'string_util'
3.调用:
* String.hankaku?("abcdef") # 判断全角字符串
* String.zenkaku?("abcdef") # 判断半角字符串
* 直接在validate中调用:
validates_format_of :code, :with => /^[ -~?-?]*$/, :message => 'wrong!', :if => proc{ |p| p.code.present? }