正则表达式测试如何仅返回完全匹配

时间:2017-05-30 15:06:29

标签: javascript jquery regex testing exec

我有这段代码:

    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上找到了我能找到的每个帖子。

请帮忙。 如何为正则表达式指定它应该只查找整个“字符串”?

3 个答案:

答案 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,以使我的脚本变得更加通用和灵活。但再次感谢您的宝贵意见。