我正在使用devise-security
gem,并进行了设置,以便要求密码(通过symbol
输入config.password_complexity
。
现在我想显示可能使用的符号。
看看gem的代码,我发现they're actually using the Regexp [[:punct:]]
。
能否请您告诉我如何从Ruby代码中从[[:punct:]]
POSIX括号表达式中获取符号列表?
我期望得到一个像#$%^*)
这样的字符串。
答案 0 :(得分:7)
[[:punct:]]
指的是Unicode中的标点符号。例如:https://www.fileformat.info/info/unicode/category/Po/list.htm
s = "foo\u1368bar" # => "foo፨bar"
s.split(/[[:punct:]]/) # => ["foo", "bar"]
对不起,但是我的问题是要使用Ruby获取该列表。
由于缺少更好的主意,您现在始终可以从1循环到unicode中的最大字符数,将其视为字符代码,生成一个单字符字符串,并将其与[[:punct:]]
regex进行匹配。这是快速而肮脏的实现
punct = 1.upto(65535).map do |x|
x.chr(Encoding::UTF_8)
rescue RangeError
nil
end.reject(&:nil?).select do |s|
s =~ /[[:punct:]]/
end
结果(如我的macOS所示):