I am trying to match a string containing printable ascii without some special characters, for example the character 'x'. I use this regex /[.&&[^x]]/ for this task.
When trying to match if the whole string is made from this character specification the regex doesn't match any more. /^[.&&[^x]]*$/
Trying this with the normal dot works however.
/^.*$/ matches every string i throw at it.
I'm using Ruby 2.7.2
The regex is constructed at runtime and the /^ ... $/ anchors are needed for other edge cases.
CodePudding user response:
Printable ASCII regex is [ -~].
To match any printable ASCII char other than x, just use character class subtraction on this class: [ -~&&[^x]].
To match a string that only contains such chars use
/\A[ -~&&[^x]]*\z/
See the Rubular demo.
