2017-01-12 12 views
2

電話番号文字列に属していない文字列のすべての文字を削除します。最初の文字は "+"であってもなくてもよく、他のすべての文字は数字でなければなりません。Ruby gsubで電話番号の無効な文字を削除する

私はgsub(/\D/, '')でしたが、最初の文字は "+"(または数字)のままにしておきたいと思います。私はその後いくつか否定を試みたが、これは正しくない。gsub(/^(\+?(\d))/, '')

「+」の正規表現で最初の文字を無視するにはどうすればよいですか?

+0

「1-912-555-1212x2300」や「1-888-YOU-KNOW」のような正当な電話番号はどうですか? – tadman

+0

@tadmanおそらく私はタイトルを変更する必要がありますが、私が記述している振る舞いは、私が望む振る舞いです。 :) –

+0

@CarySwoveland "最初の文字は" + "であってもなくてもよく、他のすべての文字は数字でなければなりません。"どの部分がはっきりしていないのですか? –

答えて

5

どのように先頭に否定先読みの使用に関する:最初の文字はの初めに、単一の「+」文字でない場合

gsub(/(?!^\+)\D*/, '') 

基本的には、上記の正規表現は、数字以外の任意のシリーズを削除する必要があります文字列

希望します。

+0

ニース、Lautaro! –

0

gsubで絶対に行う必要がない限り、プラス記号を別々に取り出す方が簡単かもしれません。プラス記号が見つからない場合はnilを返しますので、必要である

my_string[/^\+/].to_s + my_string.gsub(/\D/, '')

to_s:あなたのようなもので、[] methodを使用することができます。

関連する問題