的mailto:abcd@gmail.com 不匹配电子邮件正则表达式。 /\A[\w+-.]+@[a-z\d-]+(.[a-z\d-]+)*.[a-z]+\z/i 我想检查给定字符串中的任何子字符串是否与正则表达式匹配。 在这种情况下,abcd @gmail.com匹配正则表达式。
答案 0 :(得分:0)
在正则表达式中,\A
表示“字符串开头”,\z
表示“字符串结束”。因此,您的模式仅限于与整个字符串匹配。
"mailto:abcd...."
包含:
字符,您的正则表达式模式不允许这样做。因此字符串不匹配。
如果删除这些锚点,则会得到您期望的结果:
"mailto:abcd@gmail.com".match(/[\w+-.]+@[a-z\d-]+(.[a-z\d-]+)*.[a-z]+/i)
#=> #<MatchData "abcd@gmail.com" 1:".c">
另外请注意,您的电子邮件正则表达式非常混乱!特别是这部分:
[a-z\d-]+(.[a-z\d-]+)*.[a-z]+
那是什么意思?它可能并不意味着你认为它意味着......如果你能解释这里的意图,我将能够提供更准确的模式匹配。
答案 1 :(得分:0)
您可以使用[A-Za-z0-9_.]+@[A-Za-z0-9]+.[a-z]+
检查字符串是否包含电子邮件地址。
[A-Za-z0-9_.]+
匹配1个或多个字符/数字/点(。)/下划线(_)
@
匹配电子邮件地址中的@
[A-Za-z0-9]+
匹配域名。例如:abcd@gmail.com中的gmail
.
匹配。
[a-z]+
匹配1个或多个字符。例如:com在abcd@gmail.com