1

私はjs文字列を持っています...

var string = "Hi how are you <b>today</b>";

私は今、新しいjs文字列を持っています...

var newstring = "are today";

var stringdon't matchからすべての単語を削除したいvar newstring。また、それらの単語に関連付けられているタグがあれば保持したいと思います。

Example Result:
are <b>today</b> 
4

4 に答える 4

3

このようなことを行う簡単な方法がいくつかあります。それらが機能するかどうかは、これを何に使用するかによって異なりますが、おそらく次のようなものです。

var string = "Hi how are you <b>today</b>",
    newstring = "are today",
    words = newstring.split(' ');

for (var i=0; i<words.length; i++) {
    var reg = new RegExp(words[i], 'gi');
    string = string.replace(reg, '');
}

console.log(string);​

フィドル

于 2012-04-16T17:16:40.120 に答える
0
var source = "Hi how are you <b>today</b>",
    pattern = "are today",
    res = [];

pattern.split(/\s+/).forEach(function( word ) {
    source.split(/\s+/).forEach(function( sWord ) {
        if( ~sWord.indexOf(word) ) res.push( sWord );
    });
});

console.log(res.join(' '));
于 2012-04-16T17:22:43.117 に答える
0
var str = 'Hi how are you <b>today</b>',
    words = ['are', 'today']; //or 'are today'.split(' '),
    regex = new RegExp('(<[a-zA-Z]*>)?(' + words.join('|') + ')(</[a-zA-Z]*>)?', 'g');

console.log(regex, str.match(regex), str.match(regex).join(' '));

ただし、すべての HTML タグをキャプチャするには、より複雑な正規表現が必要になります。

http://jsfiddle.net/g7xQx/

于 2012-04-16T17:25:23.000 に答える
0
var string = "Hi how are you <b>today</b>",
    newstring = "are today",
    words= newstring.split(' ');
$.each(words, function(i, v) {
    if(new RegExp(v, 'ig').test(string) && !new RegExp('<b>'+v+'</b>', 'ig').test(string)) {
        string = string.replace(v,'');
    }
});
console.log(string);
于 2012-04-16T17:21:56.250 に答える