文字・数字
pass.match(/[a-z\d]{8,}/i)
[a-z]
: 括弧で囲まれた文字のいずれか 1 個にマッチ\d
: 数字にマッチ{n, m}
: 直前の文字がn回以上m回以下出現。i
: 大文字・小文字を区別しない検索
mail = 'hoge@fuga.com' mail.match(/@.+/) => #<MatchData "@tech-camp.com">
.
: どの1 文字にもマッチ+
: 直前の文字の 1 回以上の繰り返しにマッチ
基本的に \A
と \z
を使うことが必須。
文章の頭から終わりまで。\Z(大文字)は文末が改行ならその手前まで。
なので改行を許容することになるので通常は\zを使う。
「*」「+」
*は直前の文字の0回以上の繰り返し
+は直前の文字の1回以上の繰り返し
正規表現オブジェクト
文字列で正規表現パターンを指定する。
エスケープ処理と混同しないため、\dなどの文字は\\dとバックスラッシュを2重にする。
var pattern = new RegExp("groups/\\d\\d/messages")
subメソッド gsubメソッド
subメソッドでは一致する文字列の最初の1つ目しか置換されない。
gsubメソッドではマッチする文字列の全てを置換する。
このgはグローバルマッチと呼ばれ、文字列内で指定した文字が複数含まれている場合、その全てを置換する。
str = "りんごを食べる"
str.sub(/りんご/,"みかん")
=> "みかんを食べる"
subメソッドは、第一引数に置き換えたい文字列を指定し、第2引数に変換後の文字列を指定する。操作したい文字列は/
で囲む。
JavaScriptでは同じ機能を持つメソッドとしてreplaceメソッドがある。
matchメソッド
str = "Hello, World"
str.match(/Hello/)
=> #<MatchData "Hello">
str.match(/hoge/)
=> nil
matchは引数に指定した文字列がレシーバの文字列に含まれているか否かをチェックする。
含まれている場合は、指定した文字列がMatchDataオブジェクトの返り値となる。
含まれていない場合は、返り値がnilとなる。
MatchDataオブジェクト
マッチした文字列等はMatchDataオブジェクトで返る。
MatchDataオブジェクトから文字列等を取り出す際は、以下の様に配列と同様にして取り出す。
irb(main):001:0> str = "Hello, World"
=> "Hello, World"
irb(main):002:0> md = str.match(/Hello/)
=> #<MatchData "Hello">
irb(main):003:0> md[0]
=> "Hello"
コメント