JavaScript将搜索匹配项存储在数组中
JavaScript storing search matches in array
如何存储从id="post_body"
到数组的搜索匹配项?
<textarea name="post[body]" id="post_body">
--Lorem ipsum——dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incidicount ut labore et--多洛雷——巨大的aliqua。乌特尼姆和最小的威尼斯人,诺斯特鲁德·埃克劳姆科的工作人员,尼西和阿利奎普的前任。--Duis aute——irure dolor in reprechenderit in volupate velit esse cillum——Dolore——eu fugiat nulla pariatur
</textarea>
目标都是用"--"包围的单词。在Ruby中,我使用
matches = tex.scan(/--(.+?)--/).flatten
matches = matches.uniq
在这种情况下,阵列将是:
matches = ["Lorem ipsum", "Dolore", "Duis aute"];
注意:单词"Dolore"出现两次,用--
包围,但在数组中应该只存储一次。
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>
您可以使用以下代码:
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);
正则表达式将匹配--
中包含的文本,并仅在数组中不存在值的情况下将第一个捕获组文本放入数组arr
(contains
函数取自此SO post)。
至于正则表达式,添加到--'s*(.*?)'s*--
中的's*
将修剪内部的值。如果不需要修剪,请删除这些's*
。
相关文章:
- Meteor会话变量未存储数组
- 在Javascript的Textbox中存储数组中的值
- 如何保留输入复选框值的存储数组
- 如何在 localStorage 中存储数组
- 如何在打包的 chrome 应用中本地存储数组
- 如何在 html5 的本地存储对象中存储数组
- 需要循环访问 json 数据的本地存储数组中存储的 json 对象
- 在 Javascript 中创建存储数组,并在每次单击时推送元素 ID
- 根据选中的复选框存储数组元素
- 如何存储数组javascript
- 存储数组在Chrome扩展
- 什么是最有效的方式来存储数组从PHP到JS/jQuery,这样它是可重用的
- Javascript存储数组值
- 存储数组到Cookie Jquery
- Ruby在遍历函数时尝试存储数组元素
- 如何从mongodb的形式存储数组
- 如何在html中打印存储在本地存储数组中的值
- 使用Firebase存储数组
- 获取字符串格式的MySQL存储数组并转换为JSON对象的数组
- 在html attr中存储数组值的最佳实践