JavaScript中的两个字符串相同的match()方法

时间:2016-02-02 04:59:34

标签: jquery regex string replace match

我的问题是,我如何通过相同的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))

但不工作,我认为这是错误的,但如何通过相同的方法匹配两个不同的字符串?按我给出的代码。

5 个答案:

答案 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">