需要ASP判断字符串必须由038ACDEHIMOTUVWXY组成,字符顺序无所谓,但不能重复,而且一个也不能少(用len(17)解决),我写的正则表达式(用not反向判断):
answer=ucase(trim(request.Form("chepai")))'输入大写转换
Set re = New RegExp'申明正则表达式变量
re.Pattern = "[^038ACDEHIMOTUVWXY]|(/w+)(.*)/1"
if (len(answer)=17) and (not re.test(answer)) then
yes=true
ELSE
yes=false
end if
Set re = New RegExp'申明正则表达式变量
re.Pattern = "[^038ACDEHIMOTUVWXY]|(/w+)(.*)/1"
if (len(answer)=17) and (not re.test(answer)) then
yes=true
ELSE
yes=false
end if
正则表达式"[^038ACDEHIMOTUVWXY]|(/w+)(.*)/1"由两部分组成,中间用“|”逻辑或连接
前面的[^038ACDEHIMOTUVWXY]匹配除了这17个字符之外的任何字符,很简单。
关键是后面的(/w+)(.*)/1匹配任意重复的字母数字比较难想到。
/1表示匹配前面的/w所匹配的字符,.*表示中间可以隔0个或多个其他字符。
本来开始写的是这样:[^038ACDEHIMOTUVWXY]|.{2,}
结果那个.{2,}把“03”这样的也给匹配了,不符合要求,我只想匹配出“00”“33”或者“030”这样的,还是应该用(/w+)(.*)/1