我想检查字符串的真实性。
我想确保字符串的格式为firstname.lastname@domain.com。
使用grepl我能够确认“@ domain.com”存在..
> string <- "bob.smith@domain.com"
> grepl("@domain.com", string)
# [1] TRUE
我还要确认期间左右两个字符。例如,“bobsmith@domain.com”应返回false,因为句点不会在“@”之前分隔任何字符串。分隔名字和姓氏的.
应仅出现在@
之前,并且必须在之前和之后都有字符。
答案 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。