正则表达式测试如何return只精确匹配

regex test How to return only exact match

我有这个代码:

    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 是数组中特定 post 的索引。

element.AdminID就是我要搜索的对应索引。

问题: 每当我尝试执行此搜索时,我都会得到每个匹配的索引以及匹配的部分索引。

假设我想检索索引#78。上面的代码returns:78、178、278、10078等等。我只想要确切的索引 - 而不是包含索引的每个索引。

我试过 .exec 和测试 我在 Whosebug 上查看了我能找到的每个 post。

请帮忙。 我如何为正则表达式指定它应该只查找整个 "string" ?

问题出在您使用的搜索模式上。

在 REGEX 中,您可以匹配行的开头和结尾(在单行字符串的情况下是字符串的开头和结尾)。为此,在搜索模式的开头添加 ^,在结尾添加 $

例如 ^78$ 只会匹配索引 78,而不是 178,278...

如果您正在查找包含许多索引的带分隔符的字符串,则必须在搜索模式中添加分隔符,或者拆分字符串并搜索其基本元素。

试试这个正则表达式:
\b78\b

\b 将确保这只是 78,而不是包含 78 的数字。
在您的情况下,search_term 应该是:
var search_term = "\b"+postAdminID+"\b"

感谢您的意见。这两个建议确实使事情奏效。除了他们限制将脚本用于其他目的之外。我想对不仅仅是整数键使用一种搜索算法。

最后我得到了这个脚本,使用: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 以使我的脚本变得更加通用和灵活。但再次感谢您的宝贵意见。