38fb5103beda4b0f705574c541b290b8b253e670 chmalee Mon Sep 22 12:23:38 2025 -0700 Remove 0-length characters from search strings, refs #36387 diff --git src/hg/js/hgSearch.js src/hg/js/hgSearch.js index a30cd67b13a..19558363f3d 100644 --- src/hg/js/hgSearch.js +++ src/hg/js/hgSearch.js @@ -740,30 +740,31 @@ updateStateAndPage(jsonData, true); } $("#spinner").remove(); } function handleErrorState(jqXHR, textStatus) { cart.defaultErrorCallback(jqXHR, textStatus); $("#spinner").remove(); } function sendUserSearch() { // User has clicked the search button, if they also entered a search // term, fire off a search cart.debug(debugCartJson); var searchTerm = $("#searchBarSearchString").val().replaceAll("\"",""); + searchTerm = searchTerm.replace(/[\u200b-\u200d\u2060\uFEFF]/g,''); // remove 0-width chars if (typeof searchTerm !== 'undefined' && searchTerm.length > 0) { // put up a loading image $("#searchBarSearchButton").after("<i id='spinner' class='fa fa-spinner fa-spin'></i>"); // redirect to hgBlat if the input looks like a DNA sequence // minimum length=19 so we do not accidentally redirect to hgBlat for a gene identifier // like ATG5 var dnaRe = new RegExp("^(>[^\n\r ]+[\n\r ]+)?(\\s*[actgnACTGN \n\r]{19,}\\s*)$"); if (dnaRe.test(searchTerm)) { var blatUrl = "hgBlat?type=BLAT%27s+guess&userSeq="+searchTerm; window.location.href = blatUrl; return false; } // if the user entered a plain position string like chr1:blah-blah, just