我正在尝试提供一个可以与Javascript .test一起使用的Regex表达式,以确保我的系统只接受有效格式的查询字符串。
格式如下i=1&s1=122&s2=238&s3=167&s4=756&s5=13
它可以包含无限数量的s#=
个参数,因此可以比此示例更长或更短。
在英语中,格式类似于i=1&s[1+0]=[any number > 0]&s[1+1]=[any number > 0]&s[1+2]=[any number > 0]
等等。
现在我的正则表达式是/^([\w-]+(=[\w-]*)?(&[\w-]+(=[\w-]*)?)*)?$/
它基于this answer.中提供的代码。它可以很好地拒绝某些类型的无效字符串,但仍然有很多漏洞。
如何改进此正则表达式,以便更准确地拒绝无效数据?
答案 0 :(得分:2)
如果我正确理解了这个问题,你可以用以下方法来解决问题:
/^i=1(&s\d+=\d+)+$/
它会允许s14
在s2
之前出现,但查询参数无论如何都应该是无序的。
答案 1 :(得分:1)
答案 2 :(得分:1)