You post your sample input, your code, but you do not post your output (correct or not, error messages.... your output).
INPUT ---> YOUR CODE ---> OUTPUT
Please. It is not that hard to be complete when posting a question, this I promise you But it makes is easier for people in the community when you post this information.
(@Neo, nothing was really missing. I was able to construct the output from the given input sample and the given code. And no error message.)
The * in shell glob and find glob means every - even zero - amount of characters, so have another ? that means one character.
Further, you can egrep -v '/BACKUP/|/REJECTED/' the unwanted files, but most efficient is to let find prune=skip these directories.
As a rule of thumb, have the pruned directories first and continue with -o =OR=OTHERWISE.
You must explicitly print on the desired branch in order to not implicitly print on both branches.
Llast but not least, *.js?* covers *.jsp?* so the letter is not needed. (Perhaps you want -name "*.js?*" \! -name "*.jsp" or -name "*.js??*" ?)
@MadeInGermany i tried the ?* but the problem is i get .jsp files in the output because of '*.js?*' when a .jsp should not be returned in the output when i have -o -name '*.js?*'