JavaScript正则表达式:获取匹配字符和另一个字符之间的字符串
我对下面的文本和正则表达式方法有问题。我从我的服务器(Wordpress数据库)检索文本,我想用Regex从中提取图像JavaScript正则表达式:获取匹配字符和另一个字符之间的字符串,javascript,regex,wordpress,Javascript,Regex,Wordpress,我对下面的文本和正则表达式方法有问题。我从我的服务器(Wordpress数据库)检索文本,我想用Regex从中提取图像src 服务器中的字符串如下所示: ... [other_directives ...] [et_pb_image admin_label="Bild" src="http://url.com/wp-content/uploads/2015/08/imageXYZ.jpg" show_in_lightbox="off" url_new_window="off"
src
服务器中的字符串如下所示:
...
[other_directives ...]
[et_pb_image admin_label="Bild"
src="http://url.com/wp-content/uploads/2015/08/imageXYZ.jpg"
show_in_lightbox="off" url_new_window="off" animation="left" sticky="off" align="left"
force_fullwidth="off" always_center_on_mobile="on" use_border_color="off"
border_color="#ffffff" border_style="solid" alt="some text"]
[other_directives ...]
...
我想搜索et_pb_image
字符串,并想提取其中src
文本撇号之间的文本
纯正则表达式可以这样做吗
编辑
到目前为止我所尝试的(我是一个正则表达式初学者):
这将返回src,但带有src=“…”
标记。使用javascript:
myLongString.match( /et_pb_image.+\s+src="(.+)"/g )
您需要非常小心地使用正则表达式解析此类文本。几乎每一次我们都要假设一些事情。因此,在本例中,假设在
et_pb_image
和src
属性之间没有]
。此外,我们假设src属性值包含在“
中
然后,你可以使用
var re=/et_pb_image[^\]*?src=“([^”]+)”/ig;
var str='.\n[其他指令…]\n[et\u pb\u image admin\u label=“Bild”\n show\u in\u lightbox=“off”url\u new\u window=“off”animation=“left”sticky=“off”align=“left”\n force\u fullwidth=“off”总是在移动设备上居中使用边框http://url.com/wp-content/uploads/2015/08/imageXYZ.jpg“\n[其他\u指令…]\n、 ..\n\n..\n[其他\u指令…]\n[et\u pb\u image admin\u label=“Bild”\n src=”http://url.com/wp-content/uploads/2015/08/imageXYZ.jpg“border\u color=“#ffffffff”border\u style=“solid”alt=“some text”]\n在\u lightbox=“off”url\u new\u window=“off”animation=“left”sticky=“off”align=“left”\n force\u fullwidth=“off”始终居中显示\u打开\u mobile=“on”使用\u border\u color=“off”\n\n border\u color=“#ffffffff”border\u style=“solid”alt=“some text”]\n[其他指令…]\n.\n.\n[其他指令…]\n[et\u pb\u image admin\u label=“Bild”\n src=”http://url.com/wp-content/uploads/2015/08/imageXYZ.jpg\n在\u lightbox=“off”url\u new\u window=“off”animation=“left”sticky=“off”align=“left”中显示\n force\u fullwidth=“off”always\u center\u on\u mobile=“on”use\u border\u color=“off”\n border\u color=“#ffffffff”border\u style=“solid”alt=“some text”]\n[其他指令…];
var-m;
while((m=re.exec(str))!==null){
如果(m.index==re.lastIndex){
re.lastIndex++;
}
文件。写(m[1]+“
”);
}
您尝试过什么吗?请邮寄。你确定你需要的是JS而不是PHP的解决方案吗?你能分享一下你到目前为止的尝试吗?@Stribizev我已经用我以前的尝试更新了我的问题。是的,我需要它在JS中,因为我收到了AngularJS(Ionic App Development)的字符串。@Stribizev-只是好奇,你为什么认为这行不通?如果src
不在下面的行中,它就行不通了。此外,如果另一个属性在同一行上,它将超过匹配。看,太棒了!顺便说一句,我认为它可能只适用于/et_pb_image[^]*?src=“(.+?)”/ig
。最后,可能需要修改您的str
以使src=…
具有不同的值,以说明代码确实提取了匹配的不同实例。是的,但是[^]
不可移植,并且会引起不必要的问题:)。另外,+?
比否定字符类效率更低。@Stribizev谢谢您的回答!很好用!
myLongString.match( /et_pb_image.+\s+src="(.+)"/g )