我这里有点奇怪,我基本上有一大块文本,可能包含也可能不包含图像链接。
所以可以说它确实有一个模式可以很好地提取图像 url,但是一旦找到匹配项,它就会被替换为链接为 src 的元素。现在的问题是文本中可能有多个匹配项,这就是它变得棘手的地方。由于 url 模式现在将匹配 src 标签 url,这基本上只是进入一个无限循环。
那么有没有办法只在正则表达式中匹配,如果它不以类似的模式开头="|='
?因为它会以类似的方式匹配 url:
some image http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=6
但不是
some image <img src="http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=6">
我不确定这是否可能,但如果有人可以指出我正确的方向吗?在这种情况下,单独替换是不够的,因为匹配的 url 也需要在其他地方使用,所以它需要像捕获一样使用。
我需要考虑的主要场景是:
- 一个文本块中的许多链接
- 没有任何其他文本的单个链接
- 与其他不同文本的单个链接
== 编辑 ==
这是我用来匹配网址的当前正则表达式:
(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*(?:png|jpeg|jpg|gif|bmp))
== 编辑 2 ==
让每个人都明白为什么我不能在这里使用 /g 命令是一个解释问题的答案,如果我可以像我最初尝试的那样使用这个 /g ,那么它会让事情变得更简单。