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