[英]How to get the Ruby Regexp punctuation list from the `[[:punct:]]`?
我正在使用devise-security
gem,並進行了設置,以便要求密碼中有一個symbol
(通過config.password_complexity
)。
現在,我想顯示可能使用的符號。
看看gem的代碼,我發現它們實際上是在使用Regexp [[:punct:]]
。
您能告訴我如何從Ruby代碼中從[[:punct:]]
POSIX括號表達式中獲取符號列表嗎?
我期望得到像#$%^*)
這樣的字符串。
[[: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:]]
正則表達式匹配。 這是快速而骯臟的實現
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所示):
如果您只想要標點符號的示例(因為完整列表相當笨拙),我將選擇一個您喜歡的示例,然后確保它確實與模式匹配:
example_punctuation = '(*!@$#jfas,./'.gsub(/[^[:punct:]]/, '')
# "(*!@$#,./"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.