任务:标识符必须包含至少一个非数字且只包含数字,字母,“_”和“ - ”字符。因此'qwerty','identifier-45','u _-_-','-42-'是有效的标识符。检查字符串是否只包含允许的字符
而'123456','w & 1234','标识符42'是无效的。
我可以通过正则表达式来实现吗?
id.match(/\w\d/)
或者与多于一个的匹配
id.match(/\w/) && id.match(/\d/)
或者可以是我会使得所有允许的字符数组和过滤原始字符串除去它们(如果剩下的是超过[] ,有禁止的)?
id.to_a.select{|character| !((0..9) + (a..z) + ['-','_']).include?(character)}.count == 0
即所有允许的字符被排除在串,并且如果其长度大于1,将有一些禁止字符(比如&)