You might want to re-read the bash man page's sections on "Compound commands" and "CONDITIONAL EXPRESSIONS" (caps per the man page). Your question puts the condition inside a subshell, which is unnecessary.,
If you want to match arguments ($2, $3, etc) against regular expressions, you can use a format like this:
if [[ $2 =~ ^(foo|bar)$ ]]; then
...
fi
Or:
if [[ $2 =~ ^(foo|bar)$ ]] && [[ $3 =~ ^(baz|flarn)$ ]]; then
...
fi
That said, a regular expression isn't really needed here. A regex uses more CPU than a simple pattern match. I might handle this using case statements:
case "$2" in
foo|bar)
case "$3" in
glurb|splat)
# do something
;;
esac
;;
baz)
# do something else
;;
esac
The exact way you handle parameters depends on what you actually need to do with them, which you haven't shared in your question. If you update your question to include more detail, I'd be happy to update this answer. :)
=~.