gpt4 book ai didi

Ruby 正则表达式匹配方法

转载 作者:数据小太阳 更新时间:2023-10-29 08:35:59 24 4
gpt4 key购买 nike

我给了这个正则表达式 /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]{ 2,}\z/ 我将使用它来验证电子邮件地址的有效性。

这是我的第一个 Ruby 代码,但我不确定该怎么做。我被告知使用 .match 方法,它返回 MatchData 对象。但是我如何继续验证 MatchData 对象确认有效性?

我尝试使用以下内容,但它似乎接受任何字符串,甚至不接受电子邮件地址。

#Register new handler
def register_handler

email_regex = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]{2,}\z/
email = "invalid"
unless email =~ email_regex then
puts("Insert your e-mail address:")
email = gets
end

puts("email received")


end

正确的做法是什么?使用 .match 或我上面尝试的方法。

最佳答案

正则表达式匹配电子邮件地址:

'invalid' =~ email_regex
=> nil # which boolean value is false

'email@example.com' =~ email_regex
=> 0 # which boolean value is true

但是:

"email@example.com\n" =~ email_regex
=> nil

换行符 \ngets 附加到每个输入。

这就是为什么无论您在终端中输入什么,until 循环都会一直运行的原因。由于换行符,匹配结果将始终为 nil

尝试使用 gets.chomp,它将修剪换行符,您的代码应该可以工作。

关于Ruby 正则表达式匹配方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40377812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com