【发布时间】:2021-10-11 22:04:55
【问题描述】:
我在经典 ASP 中使用 Regex 进行验证。我想验证两个不同的值,并检查是否只有两个模式中提到的列出的字符和符号用于该值,并且我尝试使用两个不同的 Regex 对象。但这对我不起作用
这是我的代码
Set re = New RegExp
With re
.Pattern = "[a-zA-Z0-9\&_+()/-]"
.Global = True
.IgnoreCase = True
End With
Set reNew = New RegExp
With reNew
.Pattern = "[a-zA-Z0-9.!\"£$%^&()_+-=[]{}#:@./<>?\\|]"
.Global = True
.IgnoreCase = True
End With
if re.Test(strComments) = false then
response.write " <label>Upload failed !! Please enter comments using valid characters a-z A-Z 0-9 \._+()%/&-</label>"
response.end
else
if reNew.Test(strremark) = false then
response.write "<label> Upload failed !! Please enter remark using valid characters a-z A-Z 0-9 \._+()%/&-</label>"
response.end
end if
end if
谁能帮我理解我哪里出错了?
【问题讨论】:
-
第二个模式有
+-=,它表示一个范围。您可以将-移动到字符类的末尾,并转义字符类中的方括号[a-zA-Z0-9.!\"£$%^&()_+=[\]{}#:@./<>?\\|-] -
也许可以试试这个:
[a-zA-Z0-9\&_+()\/-]|[a-zA-Z0-9.!""£$%^&()_+-=[\]{}#:@.\/<>?\\|]。您留下了一些未转义的正斜杠。您的第二个正则表达式中还有一个单引号,尽管您已在表达式中转义,但仍会引发 VBscript 语法错误。|是OR的正则表达式等价物,因此您可以将两者结合在一起。如果您先使用regex101 之类的网站来测试和分析您的表达方式,这也会有所帮助。我不擅长正则表达式,但你当然可以将这两个表达式整合为一个,而不是使用|。 -
只是说“但这对我不起作用”对我们没有帮助,什么不起作用?,是否有错误,如果有,是什么?具有描述性。另一点是为什么你需要两个正则表达式模式,它们不能结合起来吗?
-
@user692942 我会记住这一点,谢谢....我使用了两种正则表达式模式,因为我想做两组单独的验证。
-
在这种情况下,每次测试后只调整模式而不是创建多个正则表达式实例可能会更干净。
标签: regex asp-classic