我试图限制用户在Access
的表单字段中输入错误的字符串。
我正在尝试确定string
的形式是" 1,2,54,765,43222"。
序列是
并且该序列可以重复未知次数。
我已经尝试将String Like
函数与"#, #"
一起使用,但是如何让这种模式可能重复出现在我的脑海中。
我也对Regex
模式持开放态度,尽管我对这方面的知识和理解非常有限。我尝试使用模式"\d+, +"
和"(\d+, )+"
,但我不相信这是正确的。
另一个解决方案可能是使用substring
并在提供的字符串的前三个字符中搜索单个出现的模式,修剪字符串以删除前三个字符并重复此操作。
给你一些例子:
我希望我的描述足够。
提前致谢。
答案 0 :(得分:3)
我有简单的解决方案:
1)首先,拆分整个字符串:
numberArray = Split(YourSequence, ", ")
现在,numberArray
应该只包含整数,如果字符串是正确的,
2)其次,你在循环中迭代numberArray
并检查是否可以使用IsNumeric
函数将特定元素转换为数字,如果任何元素无法转换,那么你的答案是{ {1}}你可以退出循环。
代码很简单,不需要任何正则表达式。
答案 1 :(得分:1)
\d+, +
和(\d+, )+
模式不合适,因为他们会找到部分匹配("22, "
中的abc 22, end
)和第二个 - 即使您通过添加锚点^
和$
来修复上一个问题,仍然需要,
+字符串末尾的单个空格。
您需要使用
^\d+(?:, \d+)*$
请参阅regex demo。
如果至少需要1个逗号,请将*
量词替换为+
,以匹配分组子模式的1个或多个匹配项。
<强>详情:
^
- 字符串的开头\d+
- 一位或多位(?:, \d+)*
- 0+序列
,
- 逗号
- space \d+
- 一位或多位$
- 字符串结尾