如何制作一个接受正则表达式的搜索框来搜索数据

how do I make a search box that accepts regular expression to search data?

本文关键字:搜索 正则表达式 数据 何制作 一个      更新时间:2023-09-26

如果用户输入"Mil*",则搜索应返回"Milk"、"Milk Cake"、"Milk sweet"、"乳条巧克力"。。。我正在尝试制作一个SAPUI5应用程序,其中的过滤器可以理解正则表达式。然后将结果显示在表格中。

 var oFilter = new sap.ui.model.Filter({
                        path     : "ProductName", 
                        operator : CustomFilterToAcceptRegEx,
                        value1   : "Milk"
                    });

我想不出该怎么做。任何建议都会有帮助。我对javascript&SAP UI5

由于您传递的运算符完全无效,上面的代码无法工作,请参阅sap.ui.model.Filter的API文档。只使用一个允许的FilterOperators。这里有一个例子:

var oFilter = new sap.ui.model.Filter({
    path     : "ProductName", 
    operator : sap.ui.model.FilterOperator.Contains,
    value1   : "Milk"
});

上面的示例匹配"Milk",这意味着用户不需要使用"*",而是可以在(搜索)字段中输入"Milk"。

如果你想允许类似"M*lk"的东西,你可以使用这样的东西:

var oFilter = new sap.ui.model.Filter({
    path     : "ProductName", 
    test     : function(oValue){ 
        //do something
    },
    value1   : "Milk"
});

sap.ui.model.Filter的构造函数详细信息告诉您如何实现oFilterInfo.test函数:

函数,用于筛选应返回布尔值的项目,以指示当前项目是否保留

但是,要小心OData,因为ODataModel实际上是一个服务器端模型。如果您将OData与SAP网关结合使用,则"自由文本"搜索可能比使用过滤器更好。SAP GW识别用于自由文本搜索的查询参数"search"。然后,GW服务的实现应该正确地处理参数。。。

此外,请确保真正了解javascript中的regex是如何工作的。这里有一个例子:

RegExp(".*world.*", "g").test("hello world");   // true

还要考虑如何转义搜索字符串,使其成为有效的正则表达式。您不能简单地传入从搜索框中收到的任何字符串。因此,在继续之前,请先了解regex是如何使用javascript的。。。