2016-05-27 10 views
0

私はJavascriptで単語の先頭部分のみを一致させて太字にする検索を実装しようとしています。検索文字列を太字にしますが、単語の先頭からのみです

「choc」を検索すると「chocolate」が表示されますが、「late」を検索するとチョコレートは表示されません。

私が持っている:

if(queryString.match(new RegExp('/\b'+inputField.val()+'/', 'gi'))) 

し、Word強調するために:

var tempName = queryString.replace(new RegExp('(^|\b)(' + inputField.val() + ')(|$)','ig'), '$1<strong>$2</strong>$3'); 

しかし、何が私が望んでいた道を作業していないが。何か案は?

+0

[jsfiddle](https://jsfiddle.net)を入力してください。 – dude

+0

'inputField.val()'は単語以外の文字( ':'や 'Я')を含んでいますか? –

+0

その場合は、[最初にエスケープする]必要があります(http://stackoverflow.com/a/6969486/3894981)。 – dude

答えて

1

例一致

Demo又はDemo

正規表現:

/(^|\s)(late)/gmi 

又は

/\b(late)/gmi 

これは一致する:

チョコレート後半チョコ

例の交換

var search = "Chocolate latechoco"; 
 
document.write(search.replace(/\b(late)/gmi, "<strong>$1</strong>"));

はまた、検索文字列inputField.val()は常にエスケープされなければならないことに注意してください。方法については、this answerを参照してください。

関連する問題