Regex 识别格式为“的文本”;firstname.middlename.lastname“;或;名、中名、姓”;
我想删除“firstname.middlename.lastname”或“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-
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。