It seems like your regex is almost there. Try using negative lookahead assertions for each exclusion, combined with the positive match for EU-Amazon AWS. Here's a revised version:
Are you trying to do this with 2 different entries (one to "over" block and a second one to allow some domains), or do you want a single deny regex to only block the exceptions?
EDIT:
I'm not sure if you already have lists or regex rules blocking parts of the EU-Amazon AWS.
If you want to block some subdomains and allow others from EU-Amazon AWS, you will need to add one rule to block some subdomains and another one to allow the desired domains.
The regex posted above will match only the domains you want to allow. regex101: build, test, and debug regex ^(?!.*(?:j4fbanners|teststring2|teststring3)).*\.eu-.+\.amazonaws\.com$
If you set this rule as whitelist you still need some rule to block the undesired ones.
This other regex will only match the domains you want to block: regex101: build, test, and debug regex ^(?:.*(?:j4fbanners|teststring2|teststring3)).*\.eu-.+\.amazonaws\.com$
If you set this rule as blocklist, it will block domains containing those strings.
This regex uses a negative lookahead to exclude the specified strings and a positive lookahead to ensure the string ends with ".eu-.amazonaws.com". This should correctly whitelist all EU-Amazon AWS domains while excluding the specified strings.
I am using 2 entries:
a) block all amazon-aws:
(.|^)amazonaws.com$
b) whitelist according the mentioned rule: allow all EU-Amazon-AWS, but not if the domain contain one of the 3 mentioned strings