我正在尝试评估表达式:
eval "\"1 pages\".gsub(/\D/,'')"
它始终检索'1 pages'
,而我只期望字符串'1'
。
为什么eval
会忽略gsub
?
答案 0 :(得分:1)
你需要转义反斜杠,因为你在插值字符串中:
eval "\"1 pages\".gsub(/\\D/, '')"
或者只是不要使用双引号,因为你不需要插值:
eval '"1 pages".gsub(/\D/, "")'
答案 1 :(得分:1)
为什么
eval
会忽略gsub
?
没有。它可能看起来如此,因为\D
在双引号中没有特殊含义,因此它被解释为普通"D"
。 "D"
内没有"1 pages"
。
答案 2 :(得分:1)
你也希望逃避D
,因为这是正则表达式的一部分而不是单独的字符“D”:
eval "\"1 pages\".gsub(/\\D/,'')"