Javascript jQuery将类附加到匹配的字符串/数字组合

Javascript jQuery将类附加到匹配的字符串/数字组合,javascript,jquery,regex,Javascript,Jquery,Regex,我试图将类添加到串/数组合的部分。我的意思是这样的: myword22-30 myword总是一样的,所以它应该直接匹配,数字可能不同,宣传也会一直存在。我希望结果是最终的标记,例如: <span class="word">myword</span><span class="num1">22</span><span class="divider">-</span><span class="num2">30<

我试图将类添加到串/数组合的部分。我的意思是这样的:

myword22-30
myword
总是一样的,所以它应该直接匹配,数字可能不同,宣传也会一直存在。我希望结果是最终的标记,例如:

<span class="word">myword</span><span class="num1">22</span><span class="divider">-</span><span class="num2">30</span>
myword22-30

首先,这可能吗?在jQuery中使用相当大的文本块执行类似操作是否有效?

这就是您的意思吗

var $newClass = $(".word").text() + $(".num1").text() + '-' + $(".num2").text();

然后可以使用


这就是你的意思吗

var $newClass = $(".word").text() + $(".num1").text() + '-' + $(".num2").text();

然后可以使用

试试看

$('p').html(function(idx, content){
    return content.replace(/myword\d+-\d+/g, function(text){
        var numcount = 0;
        return text.replace(/([a-zA-Z]+|\d+|-)/g, function(val){
            if(/[a-zA-Z]/.test(val)){
                return '<span class="word">' + val + '</span>';
            } else if(/[\d+]/.test(val)){
                return '<span class="num' + ++numcount + '">' + val + '</span>';
            } else {
                return '<span class="divider">' + val + '</span>';
            }
        });
    })
});
$('p').html(函数(idx,内容){
返回内容。替换(/myword\d+-\d+/g,函数(文本){
var numcount=0;
返回文本。替换(/([a-zA-Z]+|\d+|-)/g,函数(val){
如果(/[a-zA-Z]/.测试(val)){
返回“+val+”;
}否则如果(/[\d+]/.test(val)){
返回“+val+”;
}否则{
返回“+val+”;
}
});
})
});
演示:

试试看

$('p').html(function(idx, content){
    return content.replace(/myword\d+-\d+/g, function(text){
        var numcount = 0;
        return text.replace(/([a-zA-Z]+|\d+|-)/g, function(val){
            if(/[a-zA-Z]/.test(val)){
                return '<span class="word">' + val + '</span>';
            } else if(/[\d+]/.test(val)){
                return '<span class="num' + ++numcount + '">' + val + '</span>';
            } else {
                return '<span class="divider">' + val + '</span>';
            }
        });
    })
});
$('p').html(函数(idx,内容){
返回内容。替换(/myword\d+-\d+/g,函数(文本){
var numcount=0;
返回文本。替换(/([a-zA-Z]+|\d+|-)/g,函数(val){
如果(/[a-zA-Z]/.测试(val)){
返回“+val+”;
}否则如果(/[\d+]/.test(val)){
返回“+val+”;
}否则{
返回“+val+”;
}
});
})
});

演示:

你能更精确一点吗?
myword22-30
是节点的子字符串吗?或者它是一个完整的节点,比如
myword22-30
?所以myword22-30可能在文本的一段中,所以我的段落myword22-30很酷

应该输出为我的段落myword22-30很酷

你能更精确吗?
myword22-30
是节点的子字符串吗?或者它是一个完整的节点,比如
myword22-30
?所以myword22-30可能在一段文字中,所以我的段落myword22-30很酷

应该输出为我的段落myword22-30很酷

我不太确定,总结一下,我想找到这个(比如在一段文字中):myword22-30其中myword22-30始终相同,但任一数字可能不同,并在HTMLI中输出myword22-30我不太确定,总结一下,我想找到以下内容(在一段中):myword22-30其中myword22-30始终相同,但任一数字可能不同,然后在HTMLI中输出myword22-30,我猜这只能在myword22-30的值下工作?我想做的是找到一个div中的每一个匹配项,然后添加类。是否有一种方法可以将数字部分分离出来,而不是用一个计数来确定类,它有两个独立的if语句?我在考虑一个用例,有人希望num1和num2有不同的标记,例如,一个是span一个是div。感谢大家的帮助。这提供了不同的类,这非常棒,但是有没有一种方法可以使用不同的标记来实现呢?因此,你不想使用span,而是使用另一个标记,可能是两个不同的标记,所以第一个数字可能在一个范围内,但第二个可能在一个p中-如果这有意义的话?我猜这只会在myword的值下起作用?我想做的是找到一个div中的每一个匹配项,然后添加类。是否有一种方法可以将数字部分分离出来,而不是用一个计数来确定类,它有两个独立的if语句?我在考虑一个用例,有人希望num1和num2有不同的标记,例如,一个是span一个是div。感谢大家的帮助。这提供了不同的类,这非常棒,但是有没有一种方法可以使用不同的标记来实现呢?因此,你不想使用span,而是使用另一个标记,可能是两个不同的标记,所以第一个数字可能在一个范围内,但第二个可能在一个p-如果这有意义的话?