c59c7c3aeda4d5ffae880f2225a27d6df1afc2ab
hiram
  Sat Aug 31 09:06:23 2024 -0700
this may fix the highlight when the word has non-word characters around it refs #32596

diff --git src/hg/js/assemblySearch.js src/hg/js/assemblySearch.js
index 0fe5661..96f8ee9 100644
--- src/hg/js/assemblySearch.js
+++ src/hg/js/assemblySearch.js
@@ -260,60 +260,60 @@
     var prefix = [];	// going to be words that match prefix
     for (let word of words) {
        var noPrefix = word.replace(/^[-+]/, '');	// remove + - beginning
        if (noPrefix.endsWith("*")) {
          prefix.push(noPrefix.replace(/\*$/, ''));
        } else {
          wholeWord.push(noPrefix);
        }
     }
     if (wholeWord.length > 0) {
       for (let word of wholeWord) {
         for (let key in rowData) {
            if (rowData.hasOwnProperty(key)) {
               if (typeof rowData[key] === 'string') {
                  let value = rowData[key];
-                 let subWords = value.split(/\s+/);
+                 let subWords = value.match(/(\w+)|(\W+)/g);
                  let newString = "";
                  for (let subWord of subWords) {
                    if ( word.toLowerCase() === subWord.toLowerCase() ) {
                       newString += "<span class='highlight'>" + subWord + "</span>";
                    } else {
-                      newString += " " + subWord;
+                      newString += subWord;
                    }
                  }
                  newString = newString.trim();
                  if (newString !== rowData[key])
                     rowData[key] = newString;
               }
            }
         }
       }
     }
     if (prefix.length > 0) {
       for (let word of prefix) {
         for (let key in rowData) {
            if (rowData.hasOwnProperty(key)) {
               if (typeof rowData[key] === 'string') {
                  let value = rowData[key];
-                 let subWords = value.split(/\s+/);
+                 let subWords = value.match(/(\w+)|(\W+)/g);
                  let newString = "";
                  for (let subWord of subWords) {
                    if ( subWord.toLowerCase().startsWith(word.toLowerCase())) {
                       newString += "<span class='highlight'>" + subWord + "</span>";
                    } else {
-                      newString += " " + subWord;
+                      newString += subWord;
                    }
                  }
                  newString = newString.trim();
                  if (newString !== rowData[key])
                     rowData[key] = newString;
               }
            }
         }
       }
     }
 }
 
 // Function to generate the table and extra information
 function populateTableAndInfo(jsonData) {
     var tableHeader = document.getElementById('tableHeader');