In any regex pattern where you have a $ , IIRF requires a successful match to end
right there. What it means is ^/([0-9a-zA-Z_-]*)/about-us$ will never match a URL with a query string, because about-us must be the final string according to that pattern. The same is true for any other of your patterns that end in $.
If you would like to optionally allow a querystring, and you don't care what it is you can use a regex pattern like this:
What that says is: the string about-us must be followed by end-of-line (implied by $), or by a question-mark. The vertical pipe ( | ) symbol denotes an "alternation" in regex-speak, which is like a logical OR. It says either A or B.
In this particular case, A is end-of-line, and B is a question-mark. In the regex, the ? must be preceded with a backslash to "escape" it. So the result is ($|\?) matches either end-of-line or question-mark.
You have something similar in this pattern:
This is nearly equivalent: it uses an alternation. The first option is a question-mark followed by a series of zero of more characters of any kind. Here again the ? is backslash-escaped. Option B in the alternation is (), which matches
"nothing". And then following either of those options, is the $, denoting end-of-line. This would be nearly equivalent to:
...except that the latter does not capture the query string. In your case you don't use the captured query string explicitly (QSA appends it implicitly, you might say), so the two patterns would be functionally equivalent for your purposes.