diff --git a/app/models/ticket/number/date.rb b/app/models/ticket/number/date.rb index a939e3297..244609cb7 100644 --- a/app/models/ticket/number/date.rb +++ b/app/models/ticket/number/date.rb @@ -86,12 +86,14 @@ module Ticket::Number::Date end # probe format - string.scan(/\b#{Regexp.quote(ticket_hook)}#{Regexp.quote(ticket_hook_divider)}(\d{4,10}#{system_id}\d{2,40})\b/i) do + # NOTE: we use `(?<=\W|^)` at the start of the regular expressions below + # because `\b` fails when ticket_hook begins with a non-word character (like '#') + string.scan(/(?<=\W|^)#{Regexp.quote(ticket_hook)}#{Regexp.quote(ticket_hook_divider)}(\d{4,10}#{system_id}\d{2,40})\b/i) do ticket = Ticket.find_by(number: $1) break if ticket end if !ticket - string.scan(/\b#{Regexp.quote(ticket_hook)}\s{0,2}(\d{4,10}#{system_id}\d{2,40})\b/i) do + string.scan(/(?<=\W|^)#{Regexp.quote(ticket_hook)}\s{0,2}(\d{4,10}#{system_id}\d{2,40})\b/i) do ticket = Ticket.find_by(number: $1) break if ticket end diff --git a/app/models/ticket/number/increment.rb b/app/models/ticket/number/increment.rb index adbc39281..d104f6ed1 100644 --- a/app/models/ticket/number/increment.rb +++ b/app/models/ticket/number/increment.rb @@ -83,12 +83,14 @@ module Ticket::Number::Increment end # probe format - string.scan(/\b#{Regexp.quote(ticket_hook)}#{Regexp.quote(ticket_hook_divider)}(#{system_id}\d{2,48})\b/i) do + # NOTE: we use `(?<=\W|^)` at the start of the regular expressions below + # because `\b` fails when ticket_hook begins with a non-word character (like '#') + string.scan(/(?<=\W|^)#{Regexp.quote(ticket_hook)}#{Regexp.quote(ticket_hook_divider)}(#{system_id}\d{2,48})\b/i) do ticket = Ticket.find_by(number: $1) break if ticket end if !ticket - string.scan(/\b#{Regexp.quote(ticket_hook)}\s{0,2}(#{system_id}\d{2,48})\b/i) do + string.scan(/(?<=\W|^)#{Regexp.quote(ticket_hook)}\s{0,2}(#{system_id}\d{2,48})\b/i) do ticket = Ticket.find_by(number: $1) break if ticket end