Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery条件正则表达式返回输出_Jquery_Regex - Fatal编程技术网

Jquery条件正则表达式返回输出

Jquery条件正则表达式返回输出,jquery,regex,Jquery,Regex,如果可以使用正则表达式和jQuery返回条件输出,我想替换图像中用方括号括起来的数字: [1]将成为 在我的[11]中,它将替换为 如果我有[1e1],它将替换为 但是,如果它只是文本,则无论长度如何,它都将保持原样 [qu]将变成 这是我目前掌握的代码: $('p').each(function() { var txt = $(this).text(); var html = txt.replace(/\[(.*?)\]/g, function

如果可以使用正则表达式和jQuery返回条件输出,我想替换图像中用方括号括起来的数字:

[1]
将成为

在我的
[11]
中,它将替换为

如果我有
[1e1]
,它将替换为

但是,如果它只是文本,则无论长度如何,它都将保持原样

[qu]
将变成

这是我目前掌握的代码:

$('p').each(function() {
    var txt = $(this).text();               
    var html = txt.replace(/\[(.*?)\]/g, function($1){

        if($1.length<=3) {
            return $1.replace(/\[(.*?)\]/g,'<span class=\'rehMark\'><img src="img/$1.png" alt="$1" /></span>')
        }else{

// this is the bit I would like help with!
// and how to deal with text rather than numbers

            return '<span class=\'lngRehMark\'>'

            for (i=0; i<$1.length; i++ )
            {
                return '<img src="img/' + $1 + '.png" alt="' + $1.length + '" /></span>'
            }
            return '</span'>'
        }
    });

    $(this).html(html);
});
$('p')。每个(函数(){
var txt=$(this.text();
var html=txt.replace(/\[(.*)\]/g,函数($1){
如果($1.length'
}
});
$(this).html(html);
});

您可以使用
拆分
映射
连接
[12]
转换为
数组;
其他的
图像=$(字符分割(“”))
.map(函数(){返回“”;})
.get().join(“”);
返回“”+图像+“”;
});
$(this).html(html);
});

我有多个括号内信息的实例,例如,“[4]到[5]确定”-这将替换第一个括号和最后一个括号之间的所有内容,是否有任何方法修改它以执行每个实例?当然,我已修复代码。只需将“(.*)”替换为“([^]]*)”(匹配任何字符与匹配除“]]”之外的任何字符)。我已按照您的建议更改了代码-它现在只匹配有数值和文本值的情况[1]被忽略,但[1e]被更改,将混合使用三个[1]、[dq]、[3eq]、[q3]所有字符都将是有效文本,并由每个字符的图像替换。thanks@StephenGraham我迷路了。[12ab34ef]的预期结果是什么?对于方括号之间的每个字符,将返回一个图像[1]-[1e]-[e2e]-
$('p').each(function() {
    var txt = $(this).text();               
    var html = txt.replace(/\[([^\]]*)\]/g, function(match, chars){
        var images;
        if (chars.match(/^[^0-9]*$/))
            images = '<img src="img/' + chars + '.png" />';
        else
            images = $(chars.split(''))
              .map(function() { return '<img src="img/' + this + '.png" />'; })
              .get().join('');
        return '<span class=\'lngRehMark\'>' + images + '</span>';
    });

    $(this).html(html);
});