Power JQL

The development of Power JQL put on hold. Please subscribe to updates on the marketplace and stay tuned.

Additional and useful JQL functions to search issues using the power of regex expressions. 

Regex expressions

A simple example of a regular expression is a (literal) string. For example, the "Hello World" regex matches the "Hello World" string.

"." (dot) is another example of a regular expression. A dot matches with any single character, for example "a" or "1". The following table contains several regular expressions and describes with which search query pattern they would match.

RegexMatches
this is textMatches exactly "this is text"
this\s+is\s+textMatches the word "this" followed by one or more whitespace characters followed by the word "is" followed by one or more whitespace characters followed by the word "text".
^\d+(.\d+)?

^ defines that the pattern of the search query must start with the beginning of a new line.

\d+ matches one or several digits.

The ? makes the statement in brackets optional.

. matches ".", brackets are used for grouping.

Matches for example with "5", "1.5" and "2.21".

For details please visit https://regexone.com or https://www.regular-expressions.info/java.html

"powerIssue" JQL function

powerIssue([JQL subquery, optional], "field names", "regex expression")

 Screenshot

Search by text fields

FieldJQL
summary issue in powerIssue("summary", ".*")
descriptionissue in powerIssue("description", ".*")

Case example

Task JQL
Simple usage - find any issue with the word "amber" in the beginning of the Summary fieldissue in powerIssue("summary", "(amber).*")
Any issue from POWERJQL project, where summary or description contains "text1" or "text2" (case-insensitive)issue in powerIssue("project=POWERJQL", "summary, description", "(?i).*(text1 | text2).*")

Search by user fields

Field JQL
assigneeissue in powerIssue("assignee", "Jackson")
reporterissue in powerIssue("reporter", "Lucas")
creatorissue in powerIssue("creator", "Liam")

Case example

Task JQL
Any issue where assignee name contains "Michael" (case insensitive)issue in powerIssue("assignee", "(?i).*(Michael).*")

Search by date fields

To search by date field use pattern "yyyy/MM/dd HH:mm"

FieldJQL
createdissue in powerIssue("created", "2017.*")
updatedissue in powerIssue("updated", "2017/08/26.*")
due, duedateissue in powerIssue("due", "2017/08/26.*")
resolutiondateissue in powerIssue("resolutiondate", "2017/08.*")

Search by fixVersion, affectedVersion fields

FieldJQLNotes
fixVersionissue in powerIssue("fixVersion", ".(8\.5.).")to find all tickets with fix versions like 8.5.1, 8.5.2, 8.5.1.1 etc.
affectedVersionissue in powerIssue("affectedVersion", ".(1\.0.).")to find all tickets with affected versions like 1.0.1, 1.0.2, 1.0.1.1 etc.

Search by sprint

SprintJQL
Any issue where sprint name contains "sample" (case-insensitive)issue in powerIssue("sprint", "(?i).*(sample).*")

Search by components field

Search by watchers field

Reserved words

As you know, the following English reserved words (also known as 'stop words') are ignored from the search index in Jira and hence, Jira's text search features:

"a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "no", "not", "of", "on", "or", "s", "such", "t", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"

But not in our app! You can use all or any combinations of this word for text search in "powerIssue" search function. 

"powerComponent" JQL function

powerComponent([JQL subquery, optional], "regex expression") Can be used with 1 or 2 arguments.

 Screenshot

Case example

Any not resolved issues where any component contains words "mobile" or "dev" in any part of component name (case-sensitive):

component in powerComponent("resolution=EMPTY", ".*(mobile | dev).*")

"powerAttachment" JQL function

powerAttachment([JQL subquery, optional], regex expression)

 Screenshot

Case example

issue in powerAttachment(".*(?=android).*(?=pdf).*")

"powerProject" JQL function

powerProject(regex expression)

 Screenshot

Case example

project in powerProject(".(Customer).")


"powerWorklog" JQL function

This function allows filtering tickets based on three keywords: comment, total, count. All these keywords filter from worklogs.

Below, there are examples for each one of them.

Search by comment

CaseJQL
1issue in powerWorklog("comment", ".*devops.*")
2issue in powerWorklog("project=SAMPLE", "comment", ".*devops.*")

Examples:

 Case 1

 Case 2

Search by total

The keyword "total" allows filtering based on worked time. In order to get result(s), incorporate comparison signs( > , < , != , = ) and letters ( w=week , d=day , h=hour , m=minute).

It should be noted that one week is 40 hours and one day is 8 hours.

CaseJQL
1issue in powerWorklog("total", "<1w1d4h")
2issue in powerWorklog("project=SAMPLE", "total", "<1w1d4h")


Examples:

 Case 1

 Case 2


Search by count

The keyword "count" allows filtering based on number logged worklog. In order to get result(s), incorporate comparison signs( > , < , != , = ).

CaseJQL
1issue in powerWorklog("count", "!=1")
2issue in powerWorklog("project=SAMPLE", "count", "!=2")

Examples:

 Case 1

 Case 2

"powerHistory" JQL function

issue in powerHistory("some JQL", "fieldname", "regex expression")
issue in powerHistory("fieldname", "regex expression")
 Screenshot

Case example:

issue in powerHistory("project = TD", "description", ".*demo space.*")


"powerUser" JQL function

assignee in powerUser("fieldname", "regex expression")

Allowed fields:

  • username,
  • displayName,
  • email,
  • preference


Case example:

Find all the tickets where assignee has German location in User Preferences:

assignee in powerUser("preference=jira.user.locale","de.*")

Find all the tickets created by a user which username starts with "andr":

creator in powerUser("username","andr.*")

Find all the tickets where Reporter's display name contains "john" case-insensitive ("(?i)" search modifier):

reporter in powerUser("displayName","(?i).*john.*")

"mentionedWithoutResponse" JQL function

CaseJQLNotes
1
issue in mentionedWithoutResponse("JQL subquery")

to get all tickets where the current user has been mentioned but without response

2
issue in mentionedWithoutResponse("JQL subquery", "userName")
to get all tickets where "userName" has been mentioned but without response:
3issue in mentionedWithoutResponse("JQL subquery""currentUser()")to get all tickets where current logged in user has been mentioned without response
 Case 1

 Case 2

 Case 3

Commonly Used Regex

Emails

Regex
.*([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}).*
"powerIssue" example. Search emails in all the issue comments
issue in powerIssue("project is not empty", "comment", ".*([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}).*")
 Data samples 

email@example.com
firstname.lastname@example.com
email@subdomain.example.com

Regex
.*https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#()?&//=]*).*
"powerIssue" example. Search https links in all the issue summary
issue in powerIssue("project = TEST", "summary", ".*https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#()?&//=]*).*")

IP v4

Regex
.*(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).*
"powerIssue" example. Search ipv4 addresses in all the issue summary
issue in powerIssue("project = TEST", "summary", ".*(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).*")
 Data samples 

0.0.0.0
9.255.255.255
11.0.0.0
126.255.255.255
129.0.0.0
169.253.255.255
169.255.0.0
172.15.255.255
172.32.0.0

IP v6

Regex
.*(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])).*
"powerIssue" example. Search ipv6 addresses in all the issue summary
issue in powerIssue("project = TEST", "summary", ".*(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])).*")
 Data samples 

1200:0000:AB00:1234:0000:2552:7777:1313
21DA:D3:0:2F3B:2AA:FF:FE28:9C5A

Date Format YYYY-MM-dd

Regex
.*([12]\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])).*
"powerIssue" example. Search dates in YYYY-MM-dd format in all the issue summary
issue in powerIssue("project = TEST", "summary", ".*([12]\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])).*")
 Data samples 

2008-09-31

1600-12-25

HTML Tags. Elements with Attributes

Regex
.*<\\/?[\\w\\s]*>|<.+[\\W]>.*
"powerIssue" example. Search html tags in all the issue description
issue in powerIssue("project = TEST", "description", ".*<\\/?[\\w\\s]*>|<.+[\\W]>.*")
 Data samples 

<h2 class="offscreen">Webontwikkeling leren</h2>
<h1>Regular Expressions</h1>