如何匹配不是字母、数字或 space 的内容?

How do I match something that is not a letter or a number or a space?

我正在使用 Ruby 2.4。如何匹配不是字母、数字或 space 的内容?我试过了

2.4.0 :004 > str = "-"
 => "-"
2.4.0 :005 > str =~ /[^[:alnum:]]*/
 => 0
2.4.0 :006 > str = " "
 => " "
2.4.0 :007 > str =~ /[^[:alnum:]]*/
 => 0

但如您所见,它仍然匹配 space。

您的 /[^[:alnum:]]*/ 模式匹配 0 个或多个字母数字字符以外的符号。它将匹配空格。

要匹配除字母数字和空格以外的 1 个或多个字符,您可以使用

/[^[:alnum:][:space:]]+/

使用包含相关 POSIX 字符 类 的否定括号表达式。