Javascript正则表达式全部匹配
javascript regular expression match all
有一个类似
的字符串<img src="images/_attachments/07-08.jpg" style="width: 520px; height: 693px;" /><img src="images/_attachments/09-11.jpg" style="width: 520px; height: 693px;" />
我想用正则表达式在javascript中获得图像路径'images/_attachments/07-08.jpg'
, 'images/_attachments/09-11.jpg'
和文件名'07-08.jpg'
, '09-11.jpg'
。
var str='<img src="images/_attachments/07-08.jpg" style="width: 520px; height: 693px;" /><img src="images/_attachments/09-11.jpg" style="width: 520px; height: 693px;" />'
var strPattern=new RegExp('<img.*?src="(.*'/(.*?))".*?>', 'g');
var arrMatch=new Array();
var strHTML='';
while(arrMatches=_strPattern.exec(str)){
strHTML+='<div>'+arrMatches[2]+'</div>';
}
$('body').html(strHTML);
但我得到的是路径,而不是文件名,我该如何解决这个问题?
您的路径匹配是贪婪的,因此您将无法获得文件名所需的结果。如果您将其设置为非贪婪,则它将只匹配images/
,因此您要么需要将其加倍,要么使您的文件名匹配器不包含斜杠。将模式更改为
var strPattern=new RegExp('<img.*?src="(.*?'/([^/"]*))".*?>', 'g');
// ^
顺便说一句,一个正则表达式文字/<img.*?src="(.*?'/([^'/"]*))".*?>/g
看起来会更好。
你不匹配的"或>,也许它有帮助吗?
var strPattern=new RegExp('<img [^>]*src="([^>"]+'/([^>"]+))"[^>]*?>', 'g');
使用此模式匹配属性内容:
_strPattern=new RegExp('<img.*?src="([^">]*'/([^">]*?))".*?>', 'g');
如果你使用'。'而不是'^">',正则表达式可能跨越几个标签。
您还需要使用_arrMatches[1]
而不是_arrMatches[2]
来获取完整路径
相关文章:
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 调用正则表达式匹配的函数
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- 正则表达式只允许 x 个整数
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 改进用于验证付款金额的正则表达式
- 正则表达式与数字中的第二个点匹配
- 键按正则表达式以查找具有负值的小数
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- 将po-box javascript正则表达式转换为c#regex
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 使用正则表达式捕获“”并分割成阵列
- 正则表达式,用于匹配JavaScript中字符串的全部或初始部分
- Javascript正则表达式全部匹配