The bash manual says of the [[ expression ]] grammar:
When the == and != operators are used, the string to the right of the
operator is considered a pattern and matched according to the rules described below under Pattern Matching, as if the extglob shell option
were enabled¹.
The extglob shell option here means ksh-style extended globs, namely:
?(pattern-list)
Matches zero or one occurrence of the given patterns
*(pattern-list)
Matches zero or more occurrences of the given patterns
+(pattern-list)
Matches one or more occurrences of the given patterns
@(pattern-list)
Matches one of the given patterns
!(pattern-list)
Matches anything except one of the given patterns
I suspect +[[:digit:]] was an attempt to match 1 or more digits - that would need to be +([[:digit:]]). So comma followed by 1 or more digits, all zero or more times would be *(,+([[:digit:]]), and finally
+([[:digit:]])*(,+([[:digit:]]))
to match 1 or more digits, followed by zero or more comma separated one-or-more-digits to make the comma-separated list.
Note that glob expressions don't use ^ and $ anchors - they are always whole-line, if you wanted partial matches you would need to bracket the expression with * wildcards.
¹ That's new since bash 4.1. In older versions, you'd need an explicit shopt -s extglob for those extended glob operators to be available inside like outside [[...]].
[[ ]]acceptsERE.