やりたいこと: googleみたいに、検索結果に検索ワードの前後の文字列を表示させたい
var pattern = /^\d{3}-?\d{4}$/g; var postcode = '100-0001'; var result = postcode.match(pattern); console.log(result);
1. matchメソッド
パターンにマッチした文字列を配列で返す
gはグローバルサーチ、iは大文字小文字を区別しない
var str = "ABCDEFG" var result = str.match(/[a-c]/gi); console.log(result);
2.execメソッド
var result = /(.+)cde(f)/.exec("abcdefg"); console.log(result);
3.testメソッド
true or false
var result = /[0-9]{3}/.test(999); console.log(result);
4. searchメソッド
定された正規表現で最初にマッチした文字位置を返す
var result = str.search(/DEF/); console.log(result);
replace, splitもある。
searchを使う
var str = "私わたくしはその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。これは世間を憚はばかる遠慮というよりも、その方が私にとって自然だからである。私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執とっても心持は同じ事である。よそよそしい頭文字かしらもじなどはとても使う気にならない。" var result = str.search(/先生/);
-> 12
var str = "私わたくしはその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。これは世間を憚はばかる遠慮というよりも、その方が私にとって自然だからである。私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。筆を執とっても心持は同じ事である。よそよそしい頭文字かしらもじなどはとても使う気にならない。" var result = str.search(/先生/); if(result > 10){ var start = result - 5; console.log(str.substr(start,20) + '...'); } else { var start = 0; console.log(str.substr(start,20) + '...'); }
あ、これ、queryをbタグで囲うように置換すればいいだけじゃん。
簡単だなwww ワロタ。