有沒有辦法來檢查一個字符串是否只包含非法字符?如果有其他東西,這些角色不是非法的,但如果他們是他們自己,他們是非法的。紅寶石 - 檢查字符串是否只包含特定的字符和無效的模型
例如:
illegal_characters = ['$', '^', '\\']
所以
'$' # bad
'^^$^$^^\\\\^\\$' # bad
'$oh hey there' # good
有沒有辦法來檢查是什麼?
有沒有辦法來檢查一個字符串是否只包含非法字符?如果有其他東西,這些角色不是非法的,但如果他們是他們自己,他們是非法的。紅寶石 - 檢查字符串是否只包含特定的字符和無效的模型
例如:
illegal_characters = ['$', '^', '\\']
所以
'$' # bad
'^^$^$^^\\\\^\\$' # bad
'$oh hey there' # good
有沒有辦法來檢查是什麼?
你沒有這個標記軌道,但是你確實說無效模型...所以...
validates_format_of :myfield, without: /\A[$^\\]+\z/
注意它的without
,不with
。所以你說如果myfield
只包含那些字符,然後失敗。
如果它不是軌道,該正則表達式仍然會做你想要的。
這不是優雅,也許有人可以提供更好的答案,但這將工作。
illegal_strings = ['$', '^', '\\']
valid_string = Proc.new{ |s| !s.chars.all?{ |a| illegal_strings.include?(a) } }
# OR
# valid_string = Proc.new{ |s| !s.gsub(/[$^\\]/,'').empty?}
valid_string.call('$')
#=> false
valid_string.call('^^$^$^^\\\\^\\$')
#=> false
valid_string.call('$oh hey there')
#=> true
如果這是Rails的那麼菲利普的回答是比較合適的
你可以這樣做:由
BADDIES = '$^\\'
def all_good?(str)
str.delete(BADDIES).size > 0
end
all_good? '$' # false
all_good? '^^$^$^^\\\\^\\$' # false
all_good? '$oh hey there' # true
all_good? 'oh hey there' # true
「不是非法的,如果別的有沒有」,你只是意味着一個字母' A-ZA-Z'? – Anthony 2014-12-04 20:52:44
'\\'不是一個字符,它是一個字符串。那麼你想讓'\\'成爲合法嗎? – 2014-12-04 20:57:02
@ RustamA.Gasanov我只是舉了一個例子。我想「違法」,但我想我必須逃避它? – Jeff 2014-12-04 21:00:15