2016-05-11 8 views
-1

here [単語の部分一致]で機能します。理想的には、部分文字列には一致しません。単語の最初の文字が一致する場合、文字列のリスト内の単語の出現を検索し、ハイライト一致した単語を検索します。JavaScriptの正規表現

検索語最初の文字を検索する文字列のリスト内の任意の単語最初の文字と一致した場合でなければなりませんマッチした文字が

// Core function 
 
function buildRegexFor(find) { 
 
    return '(' + find + ')'; 
 
} 
 

 
// Handle button click event 
 
document.querySelector('button').onclick = function() { 
 
    // (1) read input 
 
    var find = document.querySelector('input').value; 
 
    var str = document.querySelector('textarea').value; 
 

 
    // (2) build regular expression using above function 
 
    var regexStr = buildRegexFor(find); 
 

 
    // (3) apply regular expression to text and highlight all found instances 
 
    str = str.replace(new RegExp(regexStr, 'g'), "<strong class='boldtxt'>$1</strong>"); 
 

 
    // (4) output 
 
    document.querySelector('span').textContent = regexStr; 
 
    document.querySelector('div').innerHTML = str; 
 
};
.boldtxt { 
 
    color: red; 
 
}
Value to find: 
 
<br> 
 
<input value="eter"> 
 
<br> 
 
<button>find</button> 
 
<br> Text to find in: 
 
<br> 
 
<textarea cols=40>meter parameter eter water twitter eternal</textarea> 
 
<br> Regex: <span></span> 
 
<br> 
 
<div></div>

を強調しました。

単語にはの特殊文字もあります。一致する場合は強調表示する必要があります。 以下は私が達成しようとしているコードです。 eter nalはeterを強調表示する必要があります。ここでは、eterのメーターとパラメータをハイライト表示しないでください。

+0

我々は見つけるために、入力値として "ETERの%と@" を提供する場合。私たちがテキストエリアに "メーターパラメータ@水とツイッターの永遠の%"の内容を持っているならば、結果 "唯一の%と@"の内容を強調表示する必要があります。 – ckn518

答えて

0

変更、彼らは言葉や単語そのものの先頭にある場合、文字列の出現のみをハイライト表示されます、次の

function buildRegexFor(find) { 
    return '(\\b' + find +')'; 
} 

に正規表現を作成する機能。私があなたの質問を正しく理解すれば、それはあなたが必要とするものです。

おかげ

パラス

関連する問題