任务:标识符必须至少包含一个非数字,并且只能包含数字,字母,“ _”和“-”字符。
因此,“ 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,则会出现一些禁止使用的字符(例如&)
使用正向前瞻:
pattern = /^(?=.*\D)[-\w]+$/
pattern =~ 'qwerty'
# => 0
pattern =~ 'identifier-45'
# => 0
pattern =~ 'u_-_-'
# => 0
pattern =~ '-42-'
# => 0
pattern =~ '123456'
# => nil
pattern =~ 'w&1234'
# => nil
pattern =~ 'identifier 42'
# => nil
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句