Match a regex pattern: regex_match
The regex_match template filter tests whether a string matches a regular expression (regex) pattern at the beginning of the string. A regular expression is a special text pattern that lets you describe what you are looking for, for example “any number” or “a word followed by a space”. It returns true if the beginning of the string matches the pattern, and false otherwise.
This is useful when you need to check whether a sensor value, entity ID, or other text starts with a specific pattern. For example, you might want to verify that a sensor value looks like a valid IP address, check if an entity ID starts with a certain prefix, or validate that an input follows an expected format. Because it only checks from the start of the string, use regex_search if you need to find a pattern anywhere in the text.
Usage
Here’s how to use this template function. Copy any example and adjust it to your setup.
{{ "light.living_room" | regex_match("light\\.") }}
true
Function signature
The signature is a technical summary of this template function. It shows the name of the function, the values (called parameters) it accepts, and what type of data each parameter expects (for example, a piece of text or a number).
Function parameters that have a = with a value after them are optional. If you leave them out, the default value shown is used automatically. Function parameters without a default are required.
regex_match(
value: str,
find: str = "",
ignorecase: bool = False,
) -> bool
Function parameters
The following parameters can be provided to this function.
Match vs search
regex_match only checks if the pattern matches at the beginning of the string. If you need to find a pattern anywhere in the string, use regex_search instead.
{{ "Room: Living Room" | regex_match("Living") }}
{{ "Room: Living Room" | regex_search("Living") }}
false
true
Case-insensitive matching
Set ignorecase to true to match regardless of upper or lowercase letters.
{{ "Light.living_room" | regex_match("light", ignorecase=true) }}
true
Good to know
- Only checks the start of the string. Use
regex_searchto match anywhere. - A literal dot (
.) must be escaped as\.because.matches any character in regex.
Try it yourself
Ready to test this? Open Developer tools > Template, paste the example into the Template editor, and watch the result update on the right. Edit the values to see how the function adapts to your own entitiesAn entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service. [Learn more].
More examples
Real scenarios where this function comes up in automations and templates. Copy any example and adapt it to your setup.
Check if an entity ID belongs to a domain
Verify that an entity ID starts with a specific domain prefix.
{% set entity = "sensor.outdoor_temperature" %}
{% if entity | regex_match("sensor\\.") %}
This is a sensor entity
{% endif %}
This is a sensor entity
Validate a sensor value format
Check if a sensor value looks like a valid number with optional decimal point.
{{ states("sensor.temperature") | regex_match("^-?\\d+\\.?\\d*$") }}
true
Still stuck?
The Home Assistant community is quick to help: join Discord for real-time chat, post on the community forum with your template and expected result, or share on our subreddit /r/homeassistant.
AI assistants like ChatGPT or Claude can also explain or fix templates when you describe what you want in plain language.
Related template functions
These functions work well alongside this one:
-
Search for a regex pattern: regex_search - Searches for a regular expression pattern anywhere in a string.
-
Replace using a regex pattern: regex_replace - Replaces all occurrences of a regular expression pattern in a string.
-
Find all regex matches: regex_findall - Finds all occurrences of a regular expression pattern in a string and returns them as a list.
-
Find regex match at index: regex_findall_index - Finds all occurrences of a regex pattern and returns the match at a specific index.
-
Test if string matches pattern: match - Template test that checks if a string matches a regular expression at the beginning.