我正在尝试提取双引号内的所有图像链接。
我可以使用
来获取引号内的文本/"([^"]*)"/
但是我只想获取与以下模式匹配的值
"https://text/text/.../text.jpg?text=text&text=..."
(...表示相似的值)
我该如何实现?
答案 0 :(得分:2)
如果网址必须以http和可选的s开头,并且必须包含.jpg
,则可以使模式更具体:
"(https?:\/\/[^"\s]+\/\S+?\.jpg[^"\s]*)"
"(
匹配开头“并开始捕获组
https?:\/\/
将http与可选的s和:// [^"\s]+
不匹配“或空格字符\/\S+?\.jpg
匹配正斜杠,非空格char non greedy和.jpg的1倍以上[^"\s]*
匹配0+次而不是空格字符或“以匹配文件扩展名后面的内容)"
关闭捕获组并匹配关闭“
let pattern = /"(https?:\/\/[^"\s]+\/\S+?\.jpg[^"\s]*)"/;
[
'"https://text/text/.../text.jpg?text=text&text=..."',
'"https://text/text/.../text.jpg?t&ext=text&text=..."',
'"https://text/text/.../text.jpg?text=text"'
].forEach(s => console.log(s.match(pattern)[1]))
答案 1 :(得分:0)
/['"]+/g
应该工作
let urlStr= "https://text/text/........./text.jpg?text=text&text=.......';
console.log(urlStr.replace(/['"]+/g, ''));
答案 2 :(得分:0)
您的试用期非常好。在这里,我们还可以使用一个简单的左右"
边界并收集介于两者之间的数据:
"(.+?)"
const regex = /"(.+?)"/gm;
const str = `"https://text/text/........./text<b>.jpg?text=text&text=.......</b>"`;
const subst = `$1`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);