Если пользователь вводит hey!
, вы хотите отобразить hey!
или hey!
? Если первый, бежать менее-thans и html-encode амперсанды (и, возможно, кавычки), и все в порядке. Модификация вашего кода для реализации второго варианта будет:
replaceAll("\\<[^>]*>","")
, но вы столкнетесь с проблемами, если пользователь введет что-то искаженное, например
.
Вы можете также проверьте JTidy , который будет анализировать «грязный» html-ввод и должен дать вам способ удалить теги, сохраняя текст.
Проблема с попыткой разделить html что у браузеров очень мягкие парсеры, более мягкие, чем любая библиотека, которую вы можете найти, поэтому, даже если вы сделаете все возможное, чтобы стричь все теги (используя метод замещения выше, DOM-библиотеку или JTidy), вы еще / g1] необходимо обязательно закодировать любые оставшиеся специальные символы HTML, чтобы обеспечить безопасность вывода.
Просто добавьте еще одно условие:
if (search != "" && (search.startsWith("th") || search.length >= minlength)) {...}
Не уверены, что вы подразумеваете под «th» вместе - «th» следует считать одной буквой?
Для минимальной длины вы можете проверить так:
$('#search_text').keyup(function(){
var search = $(this).val();
var minlength = 3;
if (event.key === "Enter" && search.length >= minlength) {
load_data(search);
}
});
});
] Если вы хотите посчитать 'th' одной буквой:
var count = (search.match(/th/g) || []).length // returns no. of occurrences of 'th'
var totalCount = search - count