【发布时间】:2012-01-14 09:25:11
【问题描述】:
如果字符串看起来像这样,我想要以下函数来验证它:
- 任何数字(包括分数和小数)
- 可选的pieces/bags/boxes同义词之一
- 可选的男性/女性同义词之一
每个之间可能有一个空格,两个可选部分的顺序无关紧要(“2 box male”==“2 male box”)
但是这个函数并没有做任何有用的事情,除了所有以数字开头的东西:
Function validAmount(Zelle As Variant)
Set regEx = CreateObject("VBScript.RegExp")
regEx.IgnoreCase = True
regEx.Pattern = "\d\s?(pcs|pieces|piece|pc|stk|bags|bag|box|bx|boxes)?\s?(male|m|female|f)?"
If (regEx.test(Zelle)) Then
validAmount = True
Else
validAmount = False
End If End Function
希望我的错误不会太愚蠢
编辑: 我想到了一个附加功能。我怎么能允许上面模式的多个实体用“,”分隔,比如“1 盒女性,3 袋米,4 件男性”
ps:两种解决方案都运行良好,但允许使用“1 男 女”或“2 箱包”之类的内容
edit2: 首先:非常感谢您的帮助!我永远不会自己解决这个问题!一旦一切按预期工作,我想点击“解决”(不能点击“向上”,因为我的声誉仍然太低)。如果我早点点击它,我很抱歉。这是我在这里的第一个问题,我对你的答案来得有多快有点不知所措:)
我想我无法表达我的愿望 :D 真的很抱歉!这是第三次尝试: 应该只允许(至少)每个组中的一个。真正的投入应该是: “#框性别” “#性别框” “# 盒子” “# 性别” “#” 但不是: “#box box”或“#gender 性别”
@sln:我认为您的第一个看起来更像我想要的,但它允许同一组的两个实例,即使它不应该寻找我:((对于 JMax 解决方案也是如此)
@JMax:我喜欢你的“拆分”解决方案!甚至没有想到这个简单的技巧 :D 我对正则表达式如此着迷,以至于没有想到其他任何东西
【问题讨论】:
-
你现在应该有权投票了 :)