2010/04/19

[JavaScript]正規表現について

まだ、[本]詳解 正規表現 第3版を読了する前に、google docsでまとめたものなので、未熟な部分があるかもしれませんが、JavaScriptの正規表現について書いていきたいと思います。
(突っ込み満載だと思うので、思う存分つっこんでください。)


エスケープ文字はバックスラッシュ「\」で表され、キャレットやドルマークの手前に付加することでエスケープが行われます。
例:「search」という語が文字列として単独で現れた場合にマッチする例

^search$
^は、キャレットは文字列の始まりを指定するために利用されるもの
$は、ドルマークは文字列の終わりを指定するために利用されるもの

※もし検索文字列の中にキャレットやドルマークを含めたい場合には、エスケープシーケンスを使用しなければならない。

エスケープ文字は、「$」で表すことができる。

キャレットは$^で、$マークは、$$で表現する。
数の範囲を検索したい場合「12345」 or「1-5」
match()
-- 文字列に対して正規表現でマッチを行うために用いられる。マッチした箇所が1つ以上あった場合は、すべてのマッチが配列として返され、配列のそれぞれの要素にはマッチした文字列のコピーが含められる。一方、マッチがなかった場合は、nullが返される。
replace()
-- 文字列に対して正規表現でマッチを行い、マッチした文字列を新たな文字列で置換するために用いられる。第1引数には正規表現を、第2引数には置換先の文字列を指定する。
search()
-- 正規表現と指定した文字列とのマッチ箇所を検索するために用いられる。マッチした場合は、正規表現がマッチした部分に当たる文字列のインデックスが返される。一方、マッチしなかった場合は-1が返される。
test()
-- 正規表現が文字列にマッチするかどうかをテストし、マッチした場合はtrueを、マッチしなかった場合はfalseを返す。文字列リテラルに対しても文字列変数に対しても用いることが可能であり、基本的には、文字列の値に対して正規表現を適用するために用いられる。

・コンストラクタを用いるアプローチでRegExpオブジェクトを作成し、大文字と小文字を区別せずに文字列を検索する例。
testRegExp = new RegExp("^search$","I")

・同様のオブジェクトを、リテラルのテキスト書式を用いると(スラッシュでくくって)次のように書き換えることもできる。
testRegExp = /^search$/i

<html>
<head>
<title>RegExp test</title>
</head>
<body>
<script language="javascript">
testRegExp = /search/i;
if (testRegExp.test("this is a search string")) {
alert("The string was found.");
} else {
alert("No match found.");
}
</script>
</body>
</html>

上の例では、searchという文字を大文字小文字区別なく、メソッドの引数の文字列から検索をかける。

引数がthis is a search stringと書かれているので、3文字目にsearchがありtrueが返ってくる。

0 コメント:

コメントを投稿