首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JQuery ui自动完成替换某些字符的Regex

使用JQuery ui自动完成替换某些字符的Regex
EN

Stack Overflow用户
提问于 2020-05-07 19:32:48
回答 2查看 538关注 0票数 0

我有一个用jQuery自动完成搜索数据库的输入。它运行得很好,但我希望它对一些字符更加宽容。假设在数据库中,数据是:oc-5,我需要请求的字符串、oc5、oc_5来匹配数据库中的当前字符串。

如果数据库中的当前值是ac2,则需要a-c-2ac_2ac-2ac 2E 215来匹配该值。

实际上,我希望角色"-“、"_”和“”表现得像通配符。

我想我得调整一下我的request.term,但我不知道怎么做。

这是我的密码:

代码语言:javascript
复制
$(".autocomplete").autocomplete({  

    delay: 100,
    source: function (request, response) {

        // Suggest URL
        var datatype = this.element.attr('data-type');
        var suggestURL = href+"&datatype="+datatype+"&term="+request.term;

        // JSONP Request
        $.ajax({
            method: 'POST',
            url: suggestURL             
        })
        .success(function(data){
            response(data);
        });
    }
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-08 15:20:53

由于您希望做到这两种方式,所以可以在使用替换后检查这两个值是否匹配,如果是这样,则使请求值与数据库值相等。

其中db_val是您的数据库值,rq_val是发送的请求值。

代码语言:javascript
复制
if (db_val.replace(/[-_\s]/g, "") == rq_val.replace(/[-_\s]/g, "")) {
    rq_val = db_val;
}

如果不希望在字符串的开头或结尾允许列出的一个特殊字符,并且不允许一行中有多个特殊字符,则可以使用以下regex:.replace(/^(?:[^-_\s][-_\s]?){3}(?<![-_\s])$/, "")。这意味着检查任何字符(不包括特殊字符,后面是特殊的重复三次),并确保字符串的结尾没有特殊字符。

我不擅长regex,但这就是我想出来的。

票数 2
EN

Stack Overflow用户

发布于 2020-05-08 00:33:45

考虑以下代码:

代码语言:javascript
复制
$(".autocomplete").autocomplete({
  delay: 100,
  source: function(request, response) {
    // Suggest URL
    var datatype = this.element.attr('data-type');
    var term = request.term;
    // Example: 'a-c-2' or 'ac_2' or 'ac-2' or 'ac 2'
    term = term.replace(/(-|_|\s)/g, "");
    // Result: ac2
    var suggestURL = href + "&datatype=" + datatype + "&term=" + term;
    $.ajax({
        method: 'POST',
        url: suggestURL
      })
      .success(function(data) {
        response(data);
      });
  }
});

您可以在发送之前更新该术语,并使用正则表达式从带有"-""_"" "的字符串中删除任何.replace()字符。

工作的例子。

代码语言:javascript
复制
$(function() {
  $("button").click(function() {
    var term = $("input").val();
    console.log(term.replace(/(-|_|\s)/g, ""));
  });
})
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>Search: <input type="text" /> <button>Test</button></p>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61666226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档