This works but has one flaw. It will also not match on "one" followed by any characters.
location ~ ^/newsletter/(?!one).*$ {
//configuration here
}
Although, this may be better:
location = /newsletter/one {
// do something (not serve an index.html page)
}
location ~ ^/newsletter/.*$ {
// do something else
}
This works because when Nginx finds an exact match with an = it uses that location to serve the request. One problem is that this will not match if you are using an index page because the request is rewritten internally and so will match the second location "better" and use that. See the following: https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms#matching-location-blocks
There is a section which explains how Nginx chooses which location to use.