JavaScript で正規表現を使いたい。
JavaScript: The Good Parts (p75) によると、
JavaScript において正規表現が利用できるメソッドは、regexp.exec, regexp.test, string.match, string.replace, string.search, string.split である。
RegExp, string ごとにメソッドを整理。
String.match
"abcdef123".match(/(b.).*(\d{3})/)
結果は、
["bcdef123", "bc", "123"]
match – MDC によると、
正規表現が
g
フラグを含んでいない場合、regexp.exec(string)
と同じ結果を返します。
exec メソッドは、
特定の文字列でのマッチのための検索を実行します。結果の配列、あるいは、
null
が返ります。
結果として返される配列の中身は、
[1], ...[n]
括弧で囲まれた部分文字列のマッチ。括弧で囲まれた部分文字列の数に制限はありません。(同上より)
例
例えば、
Google の検索において、検索した文字列を取得したい。
Google で検索した後のURL を見ると、クエリ文字列のパラメータ q の値が検索文字列のようなので、
decodeURIComponent(location.search.match(/q=(.*?)&/)[1]);
location.search と decodeURIComponent
上記 location.search は「JavaScript で URL からフラグメント以外を取得」を参照。
decodeURIComponent メソッドは、
エンコードされた URI の要素内のエスケープシーケンスをそれぞれが表す文字に置き換えます。
最左最短一致
正規表現における
.*?
はの意味は、
量指定子の後ろに?を付けると、最短でマッチさせます。この最左最短一致を「なまけもの(non-greedy)マッチ」とも言います
0コメント:
コメントを投稿