jquery目标文本节点以(string1)开头并以(string2)结尾

时间:2015-10-26 21:15:17

标签: javascript jquery replace

我希望能够定位(然后删除)此文本字符串:

[UPLOAD]any-possible_FILEname.ANY[/UPLOAD]

HTML:

var filenameRegex = new RegExp("\w\d\.");
$('.posts').contents().filter(':contains([UPLOAD])').filter(':contains([/UPLOAD])').filter(function() {
  return filenameRegex.test($(this).text());
  console.log('yep');
}).remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="posts">
        This is a forum post with lots of blabbing in it.

        [UPLOAD]this-is-a-random-unknown-filename.jpg[/UPLOAD] 

        (Note the above always begins with [UPLOAD] and ends 
        with [/UPLOAD]. Also note that between these 'tags' 
        is 1 filename of some kind, such as an image or audio
        or text file)
</span>

非常感谢,非常感谢。

3 个答案:

答案 0 :(得分:1)

你需要的正则表达式是:

/\[UPLOAD\](.*)\[\/UPLOAD\]/gi

所以你的代码应该是:

var filenameRegex = new RegExp("/\[UPLOAD\](.*)\[\/UPLOAD\]/gi"); 
$('.posts').contents().filter(':contains([UPLOAD])').filter(':contains([/UPLOAD])').filter(function(){
    return filenameRegex.test($(this).text()); 
    console.log('yep');
}).remove();

答案 1 :(得分:1)

&#13;
&#13;
var filenameRegex = /\[UPLOAD][\w\.\-]+\[\/UPLOAD]/gi;
$('.posts').filter(':contains([UPLOAD]):contains([/UPLOAD])').filter(function(i,e) {
  return filenameRegex.test($(e).text());
}).each(function(i,e){ 
  $(e).text($(e).text().replace(filenameRegex,''));
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="posts">
        This is a forum post with lots of blabbing in it.

        [UPLOAD]this-is-a-random-unknown-filename.jpg[/UPLOAD] 

        (Note the above always begins with [UPLOAD] and ends 
        with [/UPLOAD]. Also note that between these 'tags' 
        is 1 filename of some kind, such as an image or audio
        or text file)
</span>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

不是正则表达式,但这似乎可以解决问题:

var text = 'hello [UPLOAD]very[/UPLOAD] [UPLOAD]cruel[/UPLOAD] world';
var start = '[UPLOAD]';
var end = '[/UPLOAD]';

var index = text.indexOf(start);
while (index > -1)
{
    var end_index = text.indexOf(end);
    var removed_text = text.substring(index, end_index + end.length));
    text = text.substring(0, index) + text.substring(end_index + end.length);
    index = text.indexOf(start);
}