找到典型场景的正则表达式。不确定如何在正则表达式中实现这一目标。
Regex ---> (?is)[^:]\/\/
Payload ---> Regexp,test//check//last://
Matches ---> t// and k//
问题:我需要修改上面的正则表达式以忽略匹配//只有当测试字符串以" data:image"开头时(如下面的有效负载中所示)。
Payload ---> data:image/png;base64,test//check//last://
在上面这种情况下,它不符合我的标准(匹配//)因为测试字符串以" data:image"
开头建议修改上述正则表达式的方法,以便我们可以处理这种情况。
答案 0 :(得分:0)
如果我正确理解了您的问题,您希望正则表达式匹配您的模式//
和不应该是:
的前一个字符。只有当测试字符串不以data:image
开头时才能进行匹配。
/(?!data:image)(?:.*?)([^:]\/\/)/giy
(?!data:image)
确保字符串不以数据开头:image (?:.*?)
非捕获非贪婪匹配([^:]\/\/)
您的匹配//
以及不应该是:
的前一个字符/y
表示粘性匹配,以便仅匹配上一个匹配结束的位置。这样,对于以data:image
开头的字符串,它将不匹配任何内容
var regex = /(?!data:image)(?:.*?)([^:]\/\/)/giy
// This shouldn't match since test string starts with data:image
var payload = "data:image/png;base64,test//check//last://";
var match = regex.exec(payload);
console.log(match);
// This should find matches since payload doesn't start with data:image
var anotherpayload = "Regexp,test//check//last://";
match = regex.exec(anotherpayload);
while (match != null) {
// Accessing group 1
console.log(match[1])
match = regex.exec(anotherpayload);
}