Ruby regex用于提取不检测连字符的电子邮件地址

时间:2014-09-19 17:56:19

标签: regex

试着查看其他人正在使用的正则表达式,但出于某种原因,它不适合我。

我基本上只有一个字符串,例如" testing-user@example.com" ;,它只提取user@example.com而不是整个事物。

以下是我所拥有的:

regex = Regexp.new(/\b[a-zA-Z0-9._%+-,]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b/)
email = line.scan(regex)

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

连字符需要在字符类内部的位置进行转义。

[a-zA-Z0-9._%+\-,]+
              ^

+-,)目前与+,之间范围中的单个字符匹配

在字符类中,连字符具有特殊含义。您可以将连字符作为类的第一个或最后一个字符。在某些正则表达式实现中,您也可以直接放在一个范围之后。如果你将连字符放在其他任何地方,你需要在它前面加一个反斜杠,以便将它添加到你的班级。