如何将搜索匹配从id="post_body"
存储到数组?
<textarea name="post[body]" id="post_body">
- Lorem ipsum-- dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et --Dolore-- magna aliqua。 Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。 --Duis aute-- irure dolor in repreptderit in voluptate velit esse cillum --Dolore-- eu fugiat nulla pariatur
</textarea>
目标是由&#39; - &#39;包围的所有单词。在Ruby中,我这样做:
matches = tex.scan(/--(.+?)--/).flatten
matches = matches.uniq
在这种情况下,数组将是:
matches = ["Lorem ipsum", "Dolore", "Duis aute"];
注意:&#34; Dolore&#34;出现两次用--
包围,但在数组中它应该只存储一次。
答案 0 :(得分:2)
var text = document.getElementById('post_body').value;
var res = text.match(/--\w+\s*\w*--/g);
//remove duplicates
uniqueArray = res.filter(function(item, pos, self) {
return self.indexOf(item) == pos;
});
//remove "--" parts
finalArray = uniqueArray.map(function(item) {
return item.replace(/--/g,"");
});
alert(finalArray);
<textarea name="post[body]" id="post_body">--Lorem ipsum-- dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et --Dolore-- magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. --Duis aute-- irure dolor in reprehenderit in voluptate velit esse cillum --Dolore-- eu fugiat nulla pariatur</textarea>
答案 1 :(得分:1)
您可以使用以下代码:
function contains(a, obj) {
var i = a.length;
while (i--) {
if (a[i] === obj) {
return true;
}
}
return false;
}
var re = /--\s*(.*?)\s*--/g;
var str = '--Lorem ipsum-- dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et --Dolore-- magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. --Duis aute-- irure dolor in reprehenderit in voluptate velit esse cillum --Dolore-- eu fugiat nulla pariatur';
var arr = [];
while ((m = re.exec(str)) !== null) {
if (!contains(arr, m[1]))
{
arr.push(m[1]);
}
}
alert(arr);
&#13;
正则表达式将匹配--
中包含的文本,并且仅当数组中不存在该值时才将第一个捕获组文本放入数组arr
(contains
函数为取自this SO post)。
对于正则表达式,添加到\s*
的{{1}}将修改内部值。如果您不需要修剪,请删除这些--\s*(.*?)\s*--
。