Regex 用于十进制值和1个字母的正则表达式
我需要一个正则表达式来收集产品编号(1-99999.99999或99999.99999 a/Z的任意组合)。我需要检查.cells(I,1).value,并确保它只包含一个数字值或一个数字值,并且在它的末尾有一个字母,除此之外没有其他内容Regex 用于十进制值和1个字母的正则表达式,regex,vba,Regex,Vba,我需要一个正则表达式来收集产品编号(1-99999.99999或99999.99999 a/Z的任意组合)。我需要检查.cells(I,1).value,并确保它只包含一个数字值或一个数字值,并且在它的末尾有一个字母,除此之外没有其他内容 Dim RegEx As New RegExp Set RegEx = CreateObject("VBScript.RegExp") Dim strPattern As String: strPattern = "^\d+\.
Dim RegEx As New RegExp
Set RegEx = CreateObject("VBScript.RegExp")
Dim strPattern As String: strPattern = "^\d+\.?\d+?[a-z A-Z]$|^\d+\.?\d+?$|^\d+?[a-z A-Z]"
上面的模式收集具有整数或小数的每个单元格以及其后的任何内容
我需要的是“123.2A”|“123”|“1234A”而不是“123.2所有这些额外的文本”我与这个网站没有任何关联,但感谢它提供了一种简单的方法来测试正则表达式是否在做你想做的事情
我刚刚输入了您的正则表达式和测试字符串(每行一个)。因为我相信您不想匹配“0”并且希望匹配大写和小写字母,所以我将Demo的正则表达式更改为
(?I)^[1-9]?\d{1,4}(?:\。\d{1,5});[A-Z]?$
。查看这是否符合您的预期。您可以使用模式,而无需进行任何更改|
\b\d+(?:\.\d+)?[a-zA-Z]?(?!\S)
防止部分匹配的单词边界\b
将1+位与可选的小数部分匹配\d+(?:\。\d+)
匹配可选字符a-zA-Z[a-zA-Z]?
在右侧声明空白边界(?!\S)
请参阅a.
^\d{1,5}(?:\.\d{1,5})?[a-Z]?$
。如果输入是123.2:所有这些额外的文本怎么办?是否仍要提取123.2
?那么我建议。