【发布时间】:2023-03-08 12:05:01
【问题描述】:
我目前正在构建一个任意 ruby 程序,但我通过 ruby(尚未使用 rails)验证的名称验证始终无法正常工作,因为当我输入纯数字时它运行良好,而它不应该运行。
def user_input
puts 'What is your name?'
user_name = gets.chomp
name_pattern = Regexp.new('/\A[^0-9`!@#\$%\^&*+_=]+\z/')
while user_name =~ name_pattern
puts 'please enter a real name'
user_name = gets.chomp
end
user_name
end
def main
user_name = user_input
puts "\n"
puts user_name.to_s
end
此外,我尝试了正则表达式 /[az]+/ 只是为了检查它是否是我的正则表达式,但它似乎不太好,因为当我使用正则表达式 /[az]+/ 键入 33 时,它也可以正常工作美好的?我在这里做错了什么哈哈。
【问题讨论】:
-
你需要一个
/在字符串开始之前,所以这是一个永远不会匹配任何字符串的模式。使用name_pattern = /\A[^0-9`!@#$%^&*+_=]+\z/ -
它在不应该的时候运行良好 -- 这不是描述问题的好方法。 “运行良好”是什么意思?