如何使用正则表达式检查字符串是否为正确的数组格式?

How to check if the string is in proper array format with regex?

我想检查字符串是否是正确的数组结构,例如:

"[0,1,2,3,4,5,6,7,8,9]"

我想要的正则表达式应该匹配开头 [ 和结尾 ] 的方括号,并且在方括号内,它应该只包含数字 0-9 和逗号 ,.同上 即数字数组,但它是一个字符串.

我尝试了以下方法:

/\[\d+\]/

但它不适用于逗号 ,

已编辑:

我从 POST 方法接收 "[0,1,2,3,4,5,6,7,8,9]" 作为字符串。

显然根本不是正则表达式,但您最终会得到所需的整数数组,并且没有运行时错误。

if (is_array($array = json_decode($string)) && array_filter($array, 'is_int') == $array) {
    // $string is a properly formatted array of ints, now in $array. Do stuff with it
} else {
    // $string is something else, return an error or whatever
}

我知道这已经得到解答,但如果有人可能需要此正则表达式用于其他目的,您可以使用 ^\[([0-9]|.+(,[0-9])+)\]$

快速解释:

  1. 您的输入必须仅包含 0 - 9 [0-9] 之间的数字,可以用 , 分隔,每个 , 后面必须跟另一个数字 [0-9] 可以这样表达:[0-9]|.+(,[0-9])

  2. 所有数字都必须在以 [ 开头并以 ] 结尾的方括号内,因为方括号在正则表达式中是特殊字符,所以我们需要对它们进行转义:\[\]

您可以在 https://regex101.com/

测试这个表达式