我有这段代码:
var search_term = postAdminID
// Wildcards Search
var search = new RegExp(search_term, "i");
sdsFilter = $.grep(sdsInfo.products, function(element, index) {
var sted = search.exec(element.AdminID)
return sted;
postAdminID是数组中特定帖子的索引。
element.AdminID是我正在搜索的相应索引。
问题: 每当我尝试执行此搜索时,我都会获得每个匹配的索引以及匹配的索引部分。
让我们说我想要检索索引#78。上面的代码返回:78,178,278,10078等。我只想要确切的索引 - 而不是每个包含索引的索引。
我试过.exec和测试 我已经在stackoverflow上找到了我能找到的每个帖子。
请帮忙。 如何为正则表达式指定它应该只查找整个“字符串”?
答案 0 :(得分:2)
问题是您正在使用的搜索模式。
在REGEX中,您可以匹配行的开头和结尾(如果是单行字符串,则匹配字符串)。为此,请在搜索模式的开头添加^
,在结尾添加$
。
例如^78$
只匹配索引78,而不是178,278 ...
如果您正在查找包含许多索引的分隔符的字符串,则必须在搜索模式中添加分隔符,或者拆分字符串并搜索其基本元素。
答案 1 :(得分:1)
试试这个正则表达式:
\b78\b
\b
将确保这只是78,而不是包含78的数字
在您的情况下,search_term应为:
var search_term = "\b"+postAdminID+"\b"
答案 2 :(得分:0)
感谢您的投入。这两项建议都确实有效。除了他们限制使用脚本用于其他目的。我想使用一种搜索算法而不仅仅是整数键。
最后,我最终得到了这个脚本,使用: return element.AdminID == postAdminID;
var search_term = postAdminID
// Wildcards Search
var search = new RegExp(search_term, "i");
sdsFilter = $.grep(sdsInfo.products, function(element, index) {
var sted = search.exec(element.AdminID)
return element.AdminID == postAdminID;
});
我还添加了几个search.exec,以使我的脚本变得更加通用和灵活。但再次感谢您的宝贵意见。