这是我的代码:
$('#filter').on('input', function(event) {
var options = $('#Id').empty().scrollTop(0).data("options");
var search = $.trim($('#Id').val());
var regex = new RegExp(search, 'gi');
$.each(options,function(key,option){
console.log(regex.test(option.text));
if (regex.test(option.text)){
$('#Id').append("<option value="+option.value+" "+((option.disabled ==1)?'disabled':'')+">"+option.text+"</option>");
}
}.bind(this));
}.bind(this));
控制台为fullstop返回true(&#34;。&#34;)虽然选项没有fullstop(&#34;。&#34;)。
答案 0 :(得分:1)
regular expressions中有许多具有特殊含义的字符,包括与任何字符匹配的.
。
如果你想在search
中找到字面上的内容(但不区分大小写),你可能会考虑根本不使用正则表达式,只需简单的字符串方法:
var lcSearch = search.toLowerCase();
然后在循环中
if (option.text.toLowerCase().indexOf(lcSearch) !== -1)
E.g:
$('#filter').on('input', function(event) {
var options = $('#Id').empty().scrollTop(0).data("options");
var search = $.trim($('#Id').val());
var lcSearch = search.toLowerCase();
$.each(options,function(key,option){
if (option.text.toLowerCase().indexOf(lcSearch) !== -1){
$('#Id').append("<option value="+option.value+" "+((option.disabled ==1)?'disabled':'')+">"+option.text+"</option>");
}
}.bind(this));
}.bind(this));