Ruby 正则表达式错误

pac*_*tie 1 ruby regex

使用正则表达式运行 ruby​​ 脚本时,

s = object.value.gsub(/(\A[\s\xA0]*|[\s\xA0]*\Z)/n, '')
Run Code Online (Sandbox Code Playgroud)

有错误

invalid multibyte escape: /(\A[\s\xA0]*|[\s\xA0]*\Z)/ (SyntaxError)
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?红宝石版2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]

Ama*_*dan 5

\xHH语法仅对 UTF-8 字符\x00有效\x7F\x80to\xFF在 US-ASCII 编码中有效,但不是UTF-8;要在 UTF-8 中使用更高的字符,请使用\uHHHH. 因此,这些都有效:

/\u00A0/

/#{"\\xA0".encode('US-ASCII')}/

Regexp.new("\\xA0".encode('US-ASCII'))

# encoding: US-ASCII
/\xA0/
Run Code Online (Sandbox Code Playgroud)

尽管它们做不同的事情,这取决于您匹配的编码。例如:

# encoding: UTF-8
Regexp.new("\\xA0".encode('US-ASCII')) =~ "\u00A0"
# => Encoding::CompatibilityError: incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string)
Run Code Online (Sandbox Code Playgroud)