Some entities need to match patterns rather than specific terms. For example, national identification numbers, IDs, license plates, and so on. With regexp entities , you can provide regular expressions for matching.
Compound regular expressions
Each regexp entity corresponds to a single pattern,
but you can provide multiple regular expressions
if they all represent variations of a single pattern.
During agent training, all regular expressions of a single entity are combined
with the alternation operator ( | 
) to form one compound regular expression 
.
For example, if you provide the following regular expressions for a phone number:
-  ^[2-9]\d{2}-\d{3}-\d{4}$
-  ^(1?(-?\d{3})-?)?(\d{3})(-?\d{4})$
The compound regular expression becomes:
-  ^[2-9]\d{2}-\d{3}-\d{4}$|^(1?(-?\d{3})-?)?(\d{3})(-?\d{4})$
The ordering of regular expressions matters. Each of the regular expressions in the compound regular expression are processed in order. Searching stops once a valid match is found. For example, for an end user expression of "Seattle":
-  Sea|Seattlematches "Sea"
-  Seattle|Seamatches "Seattle"
Special handling for speech recognition
If your agent uses speech recognition (also known as audio input, speech-to-text, or STT), your regular expressions will need special handling when matching letters and numbers. A spoken end-user utterance is first processed by the speech recognizer before entities are matched. When an utterance contains a series of letters or numbers, the recognizer may pad each character with spaces. In addition, the recognizer may interpret digits in word form. For example, an end-user utterance of "My ID is 123" may be recognized as any of the following:
- "My ID is 123"
- "My ID is 1 2 3"
- "My ID is one two three"
To accommodate three digit numbers, you could use the following regular expressions:
\d{3} 
\d \d \d
(zero|one|two|three|four|five|six|seven|eight|nine) (zero|one|two|three|four|five|six|seven|eight|nine) (zero|one|two|three|four|five|six|seven|eight|nine)
Create a regexp entity
Console
- Open the Dialogflow CX console .
- Choose your GCP project.
- Select your agent.
- Select the Managetab.
- Click Entity Types.
- Click Create.
- Check Regexp entities.
- Complete remaining fields.
- Click Save.
API
Set the EntityType.kind 
field to KIND_REGEXP 
.  
Select a protocol and version for the EntityType reference:
| Protocol | V3 | V3beta1 | 
|---|---|---|
|   
REST | EntityType resource | EntityType resource | 
|   
RPC | EntityType interface | EntityType interface | 
|   
C++ | EntityTypesClient | Not available | 
|   
C# | EntityTypesClient | Not available | 
|   
Go | EntityTypesClient | Not available | 
|   
Java | EntityTypesClient | EntityTypesClient | 
|   
Node.js | EntityTypesClient | EntityTypesClient | 
|   
PHP | Not available | Not available | 
|   
Python | EntityTypesClient | EntityTypesClient | 
|   
Ruby | Not available | Not available | 
Limitations
The following limitations apply:
- Fuzzy matching cannot be enabled for regexp entities. These features are mutually exclusive.
- Each agent can have a maximum of 50 regexp entities.
- The compound regular expression for an entity has a maximum length of 2000 characters.

