Skip to main content

What is Regex?

Regex lets you define search patterns that match a wide range of text combinations. This is especially helpful when scammers use unpredictable variations of names or keywords.
Want to test your regex? Visit regex101.com (select the Java flavor) for testing and its reference guide — it uses the same matching engine as Hashbot.

Basic Example

/name-filters add regex ^Pascal$ This matches only the exact word Pascal.
  • ^ = start of the name
  • Pascal = exact characters
  • $ = end of the name
So it will only match: Pascal
It will not match: Pascal_, SirPascal, or pascal

Case-Insensitive Example

To make a regex case-insensitive, use (?i) at the beginning: /name-filters add regex (?i)^Pascal$ This will match:
  • pascal
  • Pascal
  • PASCAL
  • pAsCaL
But won’t match:
  • Pascall
  • this is pascal
  • 0xPascal
/name-filters add regex (?i) bot$ This filter targets any username ending in a space followed by “bot” — a common impersonation tactic. It will match:
  • OpenSea BOT
  • AB bot
  • Doodles Best Bot
It will not match:
  • bottom
  • best bots
  • bot (without a space in front)
Note: There is an intentional space in the filter: (?i) bot$

Quick Reference

Escape special characters. Characters like . * + ? ( ) [ ] { } \ | ^ $ have special meaning in regex. To match them literally, prefix with \. For example, use \. to match a period and \( to match a parenthesis.

Common Filter Patterns

Limitations

Hashbot uses Java’s regex engine. Most standard regex features are supported, including:
  • Inline flags like (?i) for case-insensitive mode
  • Lookahead/lookbehind(?=...), (?!...), (?<=...), (?<!...)
  • Character classes, quantifiers, alternation, and anchors
Hashbot rejects a few dangerous patterns at creation time:
  • Nested quantifiers like (a+)+ — these can cause catastrophic backtracking
  • Empty alternation branches — in regex, | means OR, so a pattern like (?i) | YourBrand$ contains a whitespace-only branch that would match nearly every member. To match a literal pipe (the common Discord Name | Org convention), escape it: \| YourBrand$
  • Patterns longer than 500 characters (50 on the free tier), and filters that would match an empty name or a lone space

Caution & Best Practices

  • Always test your regex on regex101.com before adding it (select the Java flavor for best accuracy)
  • Run /cleanse after adding a new filter — results are displayed with a “Review on Dashboard” button at dashboard.hashbot.com
  • Avoid overly broad patterns like .+ or .* — they match nearly everything
  • If you accidentally create an overly broad filter:
    1. Use /settings pause pause-state:pause to stop Hashbot from acting
    2. Remove the problematic filter
    3. Use /settings pause pause-state:unpause to resume normal operation
    4. Cancel any pending /cleanse jobs if needed

Need Help?

Regex can be tricky. If you’re not confident, join our Support Discord and open a ticket.
We’re happy to help build or review filters with you.