I\'m currently using the following code, to search the a div on a page for URLs and replace them with a tags.
However when we have a embed tags within the div it me
Probably, you should use DOM as recommended. But in order to make your regexp work as desired, you should prepend it with (?:^|[^"']). That means match start of line or match any character excepting ' and ". So first of your regexps will look as follows:
/(?:^|[^"'])(ftp|http|https|file):\/\/[\S]+(\b|$)/gim
And your chaining of replace method is ugly. Code will be much more readable if you will split method invocations to different lines.
Update: And in order to skip first excess character you can use $1 instead of $& and your regexp must be changed to this:
/(?:^|[^"'])((ftp|http|https|file):\/\/[\S]+(\b|$))/gim