使用正则表达式运行 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]
\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)
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |