diff --git a/core/src/main/scala/codesearch/core/util/RegexTester.scala b/core/src/main/scala/codesearch/core/util/RegexTester.scala new file mode 100644 index 0000000..1d10d24 --- /dev/null +++ b/core/src/main/scala/codesearch/core/util/RegexTester.scala @@ -0,0 +1,16 @@ +package codesearch.core.util + +import scala.util.matching.Regex + +object RegexTester { + + def regexIsInvalid(regex: String, line: String): Boolean = { + try { + regex.r.findAllMatchIn(line) + false + } catch { + case x: java.util.regex.PatternSyntaxException => true + } + } + +} diff --git a/web-server/app/views/resultFrame.scala.html b/web-server/app/views/resultFrame.scala.html index 2e9de4d..8c7dab1 100644 --- a/web-server/app/views/resultFrame.scala.html +++ b/web-server/app/views/resultFrame.scala.html @@ -8,21 +8,38 @@ @import codesearch.web.SnippetHelper @import java.net.URLEncoder +@import codesearch.core.util.RegexTester @( lang: String, insensitive: Boolean, space: Boolean, - precise: Boolean, query: String, updated: String, packages: Seq[PackageResult], - totalMatches: Int + totalMatches: Int, + precise: Boolean, + sources: Boolean, + withoutTests: Boolean, ) @regex = @{ RegexConstructor(query = query, space = space, insensitive = insensitive, precise = precise) } +@if(RegexTester.regexIsInvalid(regex, "line")) { + +} +@if(!RegexTester.regexIsInvalid(regex, "line")) { + +}
Index updated @updated
@@ -71,4 +88,4 @@

Please provide a string to search for.
+
You entered wrong regexp.
diff --git a/web-server/app/views/searchResults.scala.html b/web-server/app/views/searchResults.scala.html index 09b385d..94f878c 100644 --- a/web-server/app/views/searchResults.scala.html +++ b/web-server/app/views/searchResults.scala.html @@ -25,6 +25,6 @@ @wrapper(s"Codesearch | $lang", headExtra) { @searchBox(s"/$lang/search", query, filter, filePath, insensitive, space, precise, sources, withoutTests) - @resultFrame(lang, insensitive, space, precise, query, updated, packages, totalMatches) + @resultFrame(lang, insensitive, space, query, updated, packages, totalMatches, precise, sources, withoutTests) @pagination(page, totalMatches, callURI) }