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.