正则表达式以确保有效的查询字符串

时间:2014-11-14 06:16:37

标签: javascript regex query-string

我正在尝试提供一个可以与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.中提供的代码。它可以很好地拒绝某些类型的无效字符串,但仍然有很多漏洞。

如何改进此正则表达式,以便更准确地拒绝无效数据?

3 个答案:

答案 0 :(得分:2)

如果我正确理解了这个问题,你可以用以下方法来解决问题:

/^i=1(&s\d+=\d+)+$/

它会允许s14s2之前出现,但查询参数无论如何都应该是无序的。

答案 1 :(得分:1)

正则表达式如何

^i=\d+(?:&s\d+=\d+)+$

例如http://regex101.com/r/rP8vU5/2

答案 2 :(得分:1)

^i=\d+(?:&s\d+=\d+(?=&|$))+$

试试这个。看看演示。

http://regex101.com/r/pQ9bV3/14