Regex in shell fails to evaluate

Identical APs and OWRT builds, shell environment variables and busybox version -

root@pWPW10-1:~# opkg list busy*
busybox - 1.36.1-r2

root@pWPW10-2:~# opkg list busy*
busybox - 1.36.1-r2
root@pWPW10-1:~# set -- "a" "b" "c"; [[ $# =~ [0-4] ]] && echo $@
root@pWPW10-1:~#

root@pWPW10-2:~# set -- "a" "b" "c"; [[ $# =~ [0-4] ]] && echo $@
a b c
root@pWPW10-2:~#

And more confusion -

root@pWPW10-1:~# set -- "a" "b" "c"; [[ $# =~ [1-4] ]] && echo $@
root@pWPW10-1:~# set -- "a" "b" "c"; [[ $# =~ [2-4] ]] && echo $@
a b c
root@pWPW10-1:~# set -- "a" "b" "c"; [[ $# =~ [3-4] ]] && echo $@
a b c
root@pWPW10-1:~# set -- "a" "b" "c"; [[ $# =~ [0-3] ]] && echo $@
root@pWPW10-1:~# set -- "a" "b" "c"; [[ $# =~ [1-3] ]] && echo $@
root@pWPW10-1:~# set -- "a" "b" "c"; [[ $# =~ [2-3] ]] && echo $@
a b c
root@pWPW10-1:~# set -- "a" "b" "c"; [[ $# =~ [3-3] ]] && echo $@
a b c
root@pWPW10-1:~#

Suggestions?

Standard shell is ash and not bash.
Regex is one of the differences

This is the standard behavior in almost all shells (following is bash, could be sh or ash or csh): if the glob has no match, return the glob; it it has a match return the expansion.

$ ls l*
layer2-mode.sh  layer2.json     layer3.json

$ echo l*
layer2-mode.sh layer2.json layer3.json

$ ls b*
ls: b*: No such file or directory

$ echo b*
b*

So, where you say apk list something*, you should really always be quoting the glob apk list 'something*' to suppress expansion and let apk do its job. Without quotes it's just "accidentally" working sometimes because there happen to be no files that match.

This is not an answer to the question as the snippet clearly illustrates different behaviours in identical ash shells.

busybox supports a superset of POSIX/ SUSv4 sh syntax, including some common misconceptions bashisms to ease porting - but only the SUSv4 subset is 'guaranteed' ([[ ...]] is always wrong).

'wrong' or not, ash (in the OWRT implementation) supports compound command. And that POSIX exposes support for BREs and EREs with regcomp() in utilities, IMNSHO, 'opens the door' for implementation within [[...]].

And why, returning to the OP, does the shell on an AP correctly evaluate the impure shell command whilst on a different AP, not?

Suggestions?