我需要根据输入字符过滤textfield
,当我们提供普通字符时它工作正常,但是当我们输入特殊字符时,它不会过滤。
如何使用textfield
侦听器根据ExtJS中的()。+ *等特殊字符过滤keyup
?
***注意:剩余的特殊字符工作正常,只有()。+ *不起作用
代码:
var filter = function (valu, listv) {
if (valu !== '') {
listv.store.filter({
property : 'value',
value : new RegExp(valu, "i"),
anyMatch : true, //optional, defaults to true
caseSensitive: true //optional, defaults to true
});
} else {
listv.store.filter({
property : 'value',
value : /.*/,
anyMatch : true,
caseSensitive: true
});
}
listv.select(-1);
}
答案 0 :(得分:1)
您需要escape RegEx中的特殊字符,如下所示:
function escapeRegExp(str) {
return str.replace(/[-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
var filter = function (valu, listv) {
if (valu !== '') {
listv.store.filter({
property : 'value',
value : new RegExp(escapeRegExp(valu), "i"),
// ...