2017-05-28 72 views
2

我節省了許多與params[:number].gsub(/\D/,''),但我不想要去除的加號:+GSUB數字和+

例如,如果一個用戶保存數+1 (516) 949-9508其保存爲15169499508但如何才能保存+ as +15169499508

+0

就我所知,你只想在字符串的開頭保留一個加號?如果你更喜歡別名,使用'.gsub(/ ^(\ +)| \ D + /,'\ 1')' –

回答

3

在紅寶石\D只是[^0-9]的別名。你可以明確地設置[^0-9+]

params[:number].gsub(/[^0-9+]/,'') 
+1

或'[^ \ d +]'' – Stefan

2

如果你沒有任何語法規則,delete會工作得很好:

'+1 (516) 949-9508'.delete('^0-9+') #=> "+15169499508" 
4

我明白你只想保持一個加只在開始字符串。您需要使用:

.gsub(/\A(\+)|\D+/, '\1') 

這裏,\A(\+)分支相匹配的文字加在字符串的開始。第二個分支是您的\D,它匹配所有字符,但匹配數字,僅匹配+量詞,匹配1個或多個匹配項。 \1反向引用會在結果字符串中恢復該初始加號。