jQuery 预替换

发布于 2024-11-18 15:28:51 字数 471 浏览 3 评论 0原文

亲爱的社区,您好!

简而言之,我有一个文本框,您可以在其中粘贴 标签,如下所示:

有没有办法让这些 看起来像这样: 使用 jQuery < code>.replace() 或者类似的东西?或者我应该使用 PHP 函数?

我试图找出 jQuery .match() 对于某些正则表达式返回什么:

x = text.match(/\<img src="(.*)" \/>\$/);
alert(x);

,但当有多个 标签时,它会返回奇怪的东西。

感谢您的帮助!

Hi again dear comminity!

To make it short, I have a textbox, where you can paste <img> tags, which look like this:
<img src="123.jpg" />.

Is there any way to make these <img> look this: <img src="img/upload/username/123.jpg" /> using jQuery .replace() or something like this ? Or should I use PHP function instead ?

I have tried to find out what jQuery .match() returns for some regual expression:

x = text.match(/\<img src="(.*)" \/>\$/);
alert(x);

,but it returns odd things, when there are more than one <img> tag.

Thank you for your help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

甜心小果奶 2024-11-25 15:28:51

未经测试...

$('#text').change(function(){

    $('img').each(function(){
        $(this).attr('src', '/img/upload/username/' + $(this).attr('src'));
    });

});

如果您想使用 PHP 在服务器端执行此操作,您可以像这样替换,不需要正则表达式...

$text = str_replace('src="', 'src="/img/upload/username/', $text);

或者如果您想使用正则表达式...

$text = preg_replace('#"(.*?)\.jpg"#is', '"/img/upload/username/\\1.jpg"', $text);

Not tested...

$('#text').change(function(){

    $('img').each(function(){
        $(this).attr('src', '/img/upload/username/' + $(this).attr('src'));
    });

});

If you would like to do this on server side with PHP you can just replace like this, no need for regex...

$text = str_replace('src="', 'src="/img/upload/username/', $text);

Or if you would like to use regexp...

$text = preg_replace('#"(.*?)\.jpg"#is', '"/img/upload/username/\\1.jpg"', $text);
橙幽之幻 2024-11-25 15:28:51

您想在 jquery 中使用的函数是 .attr() 并将内容替换为您喜欢的任何内容。这是教程页面: http://api.jquery.com/attr/

The function you would like to use in jquery is .attr() and replace the content with whatever you like. Here is the tutorial page: http://api.jquery.com/attr/

天暗了我发光 2024-11-25 15:28:51

但是当有多个标签时,它会返回奇怪的东西。

我认为问题在于您没有使用惰性匹配。使用 (.*?) 而不是 (.*)

but it returns odd things, when there are more than one tag.

I think it's the problem that you are not using a lazy match. Instead of (.*) use (.*?)

夏夜暖风 2024-11-25 15:28:51
var text    =   '<img src="img/upload/username/123.jpg" />';
x = text.match(/\<img src="(.*)" \/\>$/);
alert(x);

现在你会得到吗?

match(/\<img src="(.*)" \/\>$/);
                          ^
                          |-----------------Becarefull about about ur special char dude....
var text    =   '<img src="img/upload/username/123.jpg" />';
x = text.match(/\<img src="(.*)" \/\>$/);
alert(x);

now u ll get??

match(/\<img src="(.*)" \/\>$/);
                          ^
                          |-----------------Becarefull about about ur special char dude....
霊感 2024-11-25 15:28:51

您的正则表达式返回的不是您所期望的多个标签,因为您在这里使用了贪婪量词:

x = text.match(/\<img src="(.*)" \/>\$/);
                             ^

要解决此问题,请尝试以下操作:

x = text.match(/\<img src="(.*?)" \/>\$/);

我不确定您的转义...。通常你不需要转义 < 并且我也不明白 \$ 最后有什么用。它不在你的字符串中。如果你想在字符串结尾有一个锚点,那么就不要转义它,但如果你想能够插入多个标签,则根本不能使用它。

Your regex returns not what you expect with more than one tag, because you use a greedy quantifier here:

x = text.match(/\<img src="(.*)" \/>\$/);
                             ^

To fix this try this:

x = text.match(/\<img src="(.*?)" \/>\$/);

I am not sure about your escaping ... . Normally you don't need to escape < and I also don't understand what the \$ is good for at the end. It is not in your string. If you want to have a anchor for string end then don't escape it, but if you want to be able to insert multiple tags, you can't use it at all.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文