我的问题是,我如何通过相同的match()方法匹配两个字符串,示例如下:
原始代码:
var self = $(this);
var src = self.attr('src');
if (src.match(/category/image.jpeg)) {
self.attr('src', src.replace("/category/","/categories/"));
}
我希望匹配两个字符串:
var self = $(this);
var src = self.attr('src');
if (src.match(/category/image.jpeg, /category/image.png)) {
self.attr('src', src.replace("/category/","/categories/"));
}
所以,我做了这样的改变if (src.match(/category/image.jpeg, /category/image.png))
但不工作,我认为这是错误的,但如何通过相同的方法匹配两个不同的字符串?按我给出的代码。
答案 0 :(得分:1)
我相信你想要的是一个正则表达式,匹配类别目录中的任何png或jpeg文件,在这种情况下,这将是你想要使用的正则表达式:
/\/category\/.*\.(jpeg|png)/
在代码中:
var self = $(this);
var src = self.attr('src');
if (src.match(/\/category\/.*\.(jpeg|png)/)) {
self.attr('src', src.replace("/category/","/categories/"));
}
答案 1 :(得分:1)
.match(/category/image.jgep)
不是将RegEx与String#match
一起使用的有效语法,并且会引发语法错误。
要检查字符串是否包含.jpeg
或.png
图片,您可以使用
/category\/image\.(?:jpeg|png)$/
使用RegExp#test
代替String#match
来检查字符串是否遵循模式。
<强>代码:强>
var regex = /category\/image\.(?:jpeg|png)$/i;
if (regex.test('src')) {
self.attr('src', src.replace("/category/","/categories/"));
}
要替换所有图片的/category/
,您可以attribute contains selector使用attr()
进行回调。
$('img[src*="/category/"]').attr('src', function(ind, oldSrc) {
return oldSrc.replace("/category/", "/categories/");
});
答案 2 :(得分:1)
这是你需要的正则表达式
/category(\/image\.(?:jpe?g|png))/gi
Regex101演示:https://regex101.com/r/eN6gW1/1
实施例
var regex = /category(\/image\.(?:jpe?g|png))/gi;
var self = $(this);
var src = self.attr('src');
self.attr('src', src.replace(regex, 'categories$1'));
JSFiddle演示:https://jsfiddle.net/qjyukz4c/4/
答案 3 :(得分:1)
试试这个 注意:这是引号
if(src.match('/category/image.jgep') || src.match( '/category/image.png')) {
self.attr('src', src.replace("/category/","/categories/"));
}
答案 4 :(得分:1)
HTML
<img src="category.image.jpeg">
<img src="category.image.png">
<img src="category.image.gif">
JS
var $img = $('img'),
baseStr = 'category.image',
ext = ['.jpeg', '.png'],
aryMatchStr = $.map(ext, function(item) {
return baseStr + item;
});
$.map($img, function(item, index) {
var $item = $(item),
src = $item.attr('src');
for(var i = 0, len = aryMatchStr.length; i < len; i++){
if(src.match(aryMatchStr[i])){
$item.attr('src', src.replace(/category/, 'categories'));
}
}
});
结果
<img src="categories.image.jpeg">
<img src="categories.image.png">
<img src="category.image.gif">