FIX: allow underscore and dash in username search

FIX: allow underscore and dash in username search

_ and - are technically punctuations, but we allow them in usernames so accept them in search

diff --git a/app/assets/javascripts/discourse/lib/user-search.js.es6 b/app/assets/javascripts/discourse/lib/user-search.js.es6
index 4335984..953aeba 100644
--- a/app/assets/javascripts/discourse/lib/user-search.js.es6
+++ b/app/assets/javascripts/discourse/lib/user-search.js.es6
@@ -112,13 +112,13 @@ function organizeResults(r, options) {
   return results;
 }
 
-// all punctuations except for . which is allowed in usernames
+// all punctuations except for -, _ and . which are allowed in usernames
 // note: these are valid in names, but will end up tripping search anyway so just skip
 // this means searching for `sam saffron` is OK but if my name is `sam$ saffron` autocomplete
 // will not find me, which is a reasonable compromise
 //
 // we also ignore if we notice a double space or a string that is only a space
-const ignoreRegex = /([\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-\/:;<=>?\[\]^_`{|}~])|\s\s|^\s$/;
+const ignoreRegex = /([\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\/:;<=>?\[\]^`{|}~])|\s\s|^\s$/;
 
 function skipSearch(term, allowEmails) {
   if (term.indexOf("@") > -1 && !allowEmails) {
diff --git a/test/javascripts/lib/user-search-test.js.es6 b/test/javascripts/lib/user-search-test.js.es6
index fc676db..c0d3cca 100644
--- a/test/javascripts/lib/user-search-test.js.es6
+++ b/test/javascripts/lib/user-search-test.js.es6
@@ -89,6 +89,8 @@ QUnit.test("it skips a search depending on punctuations", async assert => {
   let allowedTerms = [
     "@sam sam", // double space is not allowed
     "@sam.sam",
+    "@sam_sam",
+    "@sam-sam",
     "@"
   ];

GitHub sha: 03a70ef6

1 Like