Yes, the nerw version is a bit more strict about replacement string. You can work around it by re-writing your match pattern.
Can you write:
In this case, the second group ($2) captures the query string, starting with a question mark, or, if there is no question mark, then it captures nothing at all. I would say you might want to escape the dots - as they are wildcards. Also you might want to
separately capture the extension. So the result might be:
RewriteRule ^(/index)(\.[^?]+)(?<!\.aspx)((\?.+)|())$ $1.aspx$3
The first capture ($1) is "index" - but you could wildcard this to be something else. The second capture is the extension, including the leading dot. Example: .asp or .php. The third capture is the query string if any, including the leading question-mark.
This will work on 1.2.14 and beyond.