我正在尝试提出一个可以与 Javascript .test 一起使用的正则表达式,以确保我的系统仅接受有效格式的查询字符串。
格式如下所示 i=1&s1=122&s2=238&s3=167&s4=756&s5=13
它可以包含无限数量的 s#=
参数,因此可能比这个例子更长或更短。
在英语中,格式类似于 i=1&s[1+0]=[任意数字 > 0]&s[1+1]=[任意数字 > 0]&s[1+2]=[任意number > 0]
等等。
现在我的正则表达式是 /^([\w-]+(=[\w-]*)?(&[\w-]+(=[\w-]*)? )*)?$/
它基于 this answer. 中提供的代码它在拒绝某些类型的无效字符串方面做得不错,但仍然有很多漏掉的情况。
如何改进此正则表达式,使其更准确地拒绝无效数据?
最佳答案
如果我正确理解了这个问题,你可以通过以下方式收紧事情:
/^i=1(&s\d+=\d+)+$/
它将允许 s14
出现在 s2
之前,但查询参数无论如何都应该是无序的。
关于javascript - 正则表达式确保有效的查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26924055/