我正在使用一个VueJS应用程序,该应用程序需要一个搜索输入,然后我将根据该术语查询不同的API。我的第一个正则表达式只应该匹配不超过7位数字的数字。但是,它可以匹配任何东西。
我假设去抖动,并且switch / case语句引起一些混乱-但我不确定。
最后,我将需要进行6或7个不同的正则表达式测试,以便进行检查。
有人知道我在做什么错吗?
示例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)
}
});
Codepen示例:
https://codepen.io/thindery/pen/xeqBGx?editors=1010
控制台显示输出。尝试搜索常规词,例如“ vue”或“ library”。这些由于某种原因触发了数字正则表达式。
答案 0 :(得分:3)
实际上,/([0-9]){0,7}/
将允许任何字符串通过,因为它允许零位数字,而对其余字符串没有任何限制。
因此,将^
和$
锚添加到您的正则表达式。您不需要括号,\d
是[0-9]
:
/^\d{0,7}$/