Regex 识别格式为“的文本”;firstname.middlename.lastname“;或;名、中名、姓”;

Regex 识别格式为“的文本”;firstname.middlename.lastname“;或;名、中名、姓”;,regex,excel,vba,Regex,Excel,Vba,我想删除“firstname.middlename.lastname”或“firstname,middlename,lastname”格式的文本 有时不会有中间名,那就只有名字了 Function isEmail(ByVal data As String) Dim mailReg As Object Set mailReg = CreateObject("VBScript.RegExp") Dim regpattern As String regpattern = "/[a-z]+./[a-

我想删除“firstname.middlename.lastname”或“firstname,middlename,lastname”格式的文本

有时不会有中间名,那就只有名字了

Function isEmail(ByVal data As String)

Dim mailReg As Object
Set mailReg = CreateObject("VBScript.RegExp")

Dim regpattern As String
regpattern = "/[a-z]+./[a-z]"

Dim arr1() As String
Dim element As Variant
Dim strInput As String

arr1() = Split(data, " ")

For Each element In arr1
    strInput = element
    mailReg.IgnoreCase = True
    mailReg.Global = True
    mailReg.Pattern = regpattern
    If mailReg.Test(strInput) = True Then
        isEmail = (strInput)
    End If
Next element

End Function

这不使用正则表达式:

Option Explicit
Function isEmail(ByVal data As String) As Boolean
    Dim u As Long, temp As String, brr
    isEmail = False
    temp = Replace(data, ".", ",")

    If InStr(temp, ",") = 0 Then Exit Function

    brr = Split(temp, ",")
    u = UBound(brr)
    If u = 1 Or u = 2 Then
        isEmail = True
        Exit Function
    End If

End Function

看来你可以用这个

Function isEmail(ByVal data As String) As Boolean
    Dim l As Long
    l = Len(data) - Len(Replace(Replace(data, ",", "."), ".", vbNullString))
    isEmail = l >= 1 And l <= 2
End Function
函数isEmail(ByVal数据为字符串)为布尔值
我和你一样长
l=Len(数据)-Len(替换(替换(数据,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,vbNullString))

isEmail=l>=1和l您有更多关于您在这里尝试做什么的信息吗?您的示例输入是什么?什么是有效输入?你期望的结果是什么?你说“有时只是名字”是什么意思?只有一个单词?所以我的文本是以下格式。1) firstname.middlename.lastname的机票预订。2) 名字,中间名,姓氏食品费用3)国外旅行姓氏。姓氏easytrrp。我想在每个案例中提取firstname、middlename和last name谢谢你的回答,但使用上述代码,我无法从字符串中提取firstname.middlename.last name。你在问题中的要求是什么?抱歉,这是我第一次起草有关堆栈溢出的问题,所以我错过了这个。如果你能为我提供这方面的代码,那将是非常有用的。根据本网站的规则,你应该:1)接受你的原始问题的工作解决方案(如果有的话);2)为新的发行定义开始一个新的主题。请您解释一下为什么选择较长的代码作为解决方案,好吗?谢谢您的代码,通过此代码我可以识别数据类型,但如何使用上述代码提取firstname.middlename.lastname。