Excel VBA正则expression式检查重复的string
我有一些我想validation正确性的用户input。 用户应该input一组或多组字符,用逗号分隔。
所以这些都是有效的input
- COM1
- COM1,COM2,1234
这些都是无效的
- COM – 只有3个字符
- COM1,123 – 一套只有3个字符
- COM1.1234,abcd – 点分隔符不是逗号
我GOOGLE了一个正则expression式模式,并find了一个可能的模式,testing任何3个字符的循环实例,我修改如此
/^(.{4,}).*\1$/
但是这不是find匹配。
在通过testing之前,我可以pipe理最后的逗号,以便它始终在那里。
最好是我只想testing字母(任何情况)和数字,但是我可以和任何字符一起生活。
我知道我可以很容易地做到这一点在直VBA分割input一个逗号分隔符,并循环每个数组元素的每个字符,但正则expression式似乎更有效率,我会有更多的情况比有稍微不同的模式,所以参数化的正则expression式那会更好的devise。
TIA
我相信这是你想要的:
^([AZ|az|0-9]{4},)*[AZ|az|0-9]{4}$
这是一行开头,后跟零个或多个四个字母或数字的组,后面跟着一个逗号,然后是一组四个字母或数字,后跟一个行尾。
你可以在这里玩: https : //regex101.com/r/Hdv65h/1
正则expression式
"^[\w]{4}(,[\w]{4})*$"
应该pipe用。
您可以尝试使用以下function查看它是否适用于您的所有情况。 假设您的testingstring在电子表格的单元格A1到A5中:
Sub findPattern() Dim regEx As New RegExp regEx.Global = True regEx.IgnoreCase = True regEx.Pattern = "^[\w]{4}(,[\w]{4})*$" Dim i As Integer Dim val As String For i = 1 To 5: val = Trim(Cells(i, 1).Value) Set mat = regEx.Execute(val) If mat.Count = 0 Then MsgBox ("No match found for " & val) Else MsgBox ("Match found for " & val) End If Next End Sub
- 用Excel VBA从数字中分离string
- 一个正则expression式replace可以运行在一个范围,而不是循环在Excel中的单元格?
- 如何在Excel 2013中添加正则expression式用逗号replace数字和哈希值
- 在Excel中使用正则expression式可以在replace匹配的string之前对匹配的模式执行一些算术运算?
- Excel VBA中的正则expression式 – 第二部分
- 在Excel文件中find与单独文件中的文本匹配的文本,然后将填充颜色应用于行
- 使用jQuery Datatables 2016将带有换行符的值导出到Excel中的单元格中
- 正则expression式提取某些文本之前的数据
- 从单元格引用中使用COUNTIFS和多个选项