Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript RegExp开关箱内部debounce内部不工作_Javascript_Vue.js - Fatal编程技术网

Javascript RegExp开关箱内部debounce内部不工作

Javascript RegExp开关箱内部debounce内部不工作,javascript,vue.js,Javascript,Vue.js,我正在使用一个VueJS应用程序,它接受一个搜索输入,然后我将根据这个术语查询不同的API。我的第一个regexp应该只匹配多达7位的数字。然而,它在任何方面都是匹配的 我假设去抖动和switch/case语句会引起一些混乱,但我不确定 最后,我需要有6到7个不同的regexp测试,我将根据它们进行检查,所以我需要让它工作 有人知道我做错了什么吗 示例JS: Vue.component("v-select", VueSelect.VueSelect); new Vue({ el: "#ap

我正在使用一个VueJS应用程序,它接受一个搜索输入,然后我将根据这个术语查询不同的API。我的第一个regexp应该只匹配多达7位的数字。然而,它在任何方面都是匹配的

我假设去抖动和switch/case语句会引起一些混乱,但我不确定

最后,我需要有6到7个不同的regexp测试,我将根据它们进行检查,所以我需要让它工作

有人知道我做错了什么吗

示例JS:

Vue.component("v-select", VueSelect.VueSelect);

new Vue({
  el: "#app",
  data: {
    options: []
  },
  methods: {
    onSearch(search, loading) {
      loading(true);
      this.search(loading, search, this);
    },
    search: _.debounce((loading, search, vm) => {
      console.log('search term is '+ search);
      var regex1 = /([0-9]){0,7}/;

      switch(true){
        case regex1.test(search):
          console.log('we have a number '+ search);
          break;
        default:
          console.log('default case '+ search);
          fetch(`https://api.github.com/search/repositories?q=${escape(search)}`).then(res => {
            res.json().then(json => (vm.options = json.items));
            loading(false);
          });
          break;
        };
    }, 350)
  }
});
代码笔示例:

控制台显示输出。尝试搜索常规单词,如“vue”或“library”。由于某种原因,它们触发了数字regexp。

事实上,
/([0-9]){0,7}/
将允许任何字符串通过,因为它允许零位,而对字符串的其余部分没有任何限制

因此,将
^
$
锚定添加到您的正则表达式中。您不需要括号,
\d
[0-9]

/^\d{0,7}$/