检查user.name@domain.com的真实性 - 正则表达式

时间:2018-02-19 21:40:42

标签: regex

我想检查字符串的真实性。

我想确保字符串的格式为firstname.lastname@domain.com。

使用grepl我能够确认“@ domain.com”存在..

> string <- "bob.smith@domain.com"
> grepl("@domain.com", string)
# [1] TRUE

我还要确认期间左右两个字符。例如,“bobsmith@domain.com”应返回false,因为句点不会在“@”之前分隔任何字符串。分隔名字和姓氏的.应仅出现在@之前,并且必须在之前和之后都有字符。

1 个答案:

答案 0 :(得分:1)

您可以使用

grepl("^\\S+\\.\\S+@domain\\.com$", string)

模式匹配

  • ^ - 字符串开头
  • \\S+ - 1 +非空白字符
  • \\. - 一个点
  • \\S+ - 1 +非空白字符
  • @domain\\.com - @domain.com substring
  • $ - 字符串结束。

请参阅this regex demo

注意:如果用户名中只允许使用1个点,请将\S替换为[^\s.]否定的字符类,该字符类匹配任何字符但空白和点:

grepl("^[^\\s.]+\\.[^\\s.]+@domain\\.com$", string, perl=TRUE) ## or
grepl("^[^[:space:].]+\\.[^[:space:].]+@domain\\.com$", string)

请参阅this regex demo