我正在尝试将正则表达式匹配到textarea值中以提取单词,然后将它们附加到另一个div中 保留原始订单..但订单不受尊重..
如果我在textarea中有这个:
<textarea>
http://example.com
http://example.com
http://example.com
</textarea>
应用比赛后,(match1:/http/g
),(match2:/:\/\//g
),(match3:/example/g
)
我想获得这个:
<div id="myDiv">
<span>http</span><span>://</span><span>example.com</span>
<span>http</span><span>://</span><span>example.com</span>
<span>http</span><span>://</span><span>example.com</span>
</div>
但我正在使用此代码:
function myFun(eMatch, eType, eClass){
var split = $('#myTextarea').val().match(eMatch);
for (var i = 0; i < split.length; i++){
if(split[i]){
$('body').append('<'+eType+' class="'+eClass+'">'+split[i]+'</'+eType+'>');
}
}
}
myFun(/http/g, "span", "blue");
myFun(/:\/\//g, "span", "green");
myFun(/google/g, "span", "red");
它不保持原始订单......有没有办法保留原始订单?
答案 0 :(得分:0)
<强>更新:强>
看一下这段代码,看看这是不是你想要的: DEMO
function myFun(eMatch, eType, eClass,string){
var split = string.match(eMatch);
if(split==null) return false;
for (var i = 0; i < split.length; i++){
if(split[i]){
$('body').append('<'+eType+' class="'+eClass+'">'+split[i]+'</'+eType+'>');
}
}
}
var lines=$('#myTextarea').val().split(/\n/);
var linesLength=lines.length;
if(typeof lines[linesLength]=='undefined') linesLength--;
var firstVal=$('#myTextarea').val();
$('body').append('<br>');
for(i=0;i<=linesLength;i++){
myFun(/http/g, "span","blue",lines[i]);
myFun(/:\/\//g, "span","green",lines[i]);
myFun(/google/g, "span","red",lines[i]);
myFun(/.com/g, "span","red",lines[i]);
$('body').append('<br>')
}
你可以看到我已经改变了一些逻辑,你需要将一个字符串传递给函数,以使其适用于元素的文本,值和变量。
这段代码的作用基本上是逐行获取textarea的值,并将所有替换应用于每一行,以便按顺序获取值。