searchwp\tokens\regex_patterns
Since: 4.0.0
Table of Contents
SearchWP searches for regular expression pattern matches to keep certain strings in tact and avoid tokenization which may reduce the usefulness during search. By default there are a number of common regular expression patterns to extract strings of SKUs, dates, initials, function names, version numbers, and more.
You can use this hook to add your own pattern matches.
Note: Patterns should be provided in order of strictness; more strict first.
The default patterns are as follows:
[ | |
// Function names, including namespaced function names. | |
"/([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\\\\[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)*)\(/is", | |
// Date formats. | |
'/\b([0-9]{4}-[0-9]{1,2}-[0-9]{1,2})\b/is', // YYYY-MM-DD | |
'/\b([0-9]{1,2}-[0-9]{1,2}-[0-9]{4})\b/is', // MM-DD-YYYY | |
'/\b([0-9]{4}\\/[0-9]{1,2}\\/[0-9]{1,2})\b/is', // YYYY/MM/DD | |
'/\b([0-9]{1,2}\\/[0-9]{1,2}\\/[0-9]{4})\b/is', // MM/DD/YYYY | |
// IP addresses. | |
'/\b(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\b/is', // IPv4. | |
// Initials. | |
"/\\b((?:[A-Za-z]\\.\\s{0,1})+)/isu", | |
// Version numbers: 1.0 or 1.0.4 or 1.0.5b1. | |
'/\b([a-z0-9]+(?:\\.[a-z0-9]+)+)\b/is', | |
// Serial numbers. | |
'/(?=\S*[\-\_])([[:alnum:]\-\_]+)/ius', // Hyphen/underscore separator. | |
// Strings followed by digits and maybe strings. | |
// e.g. `System 1` or `System 12ab-cd12` | |
'/([A-Za-z0-9]{1,}\s[0-9]{1,}[A-Za-z0-9]*)/iu', | |
// Strings of digits. | |
"/\\b(\\d{1,})\\b/is", | |
// e.g. M&M, M & M. | |
"/\\b([[:alnum:]]+\\s?(?:&\\s?[[:alnum:]]+)+)\b/isu", | |
// Strings with apostraphe(s). Consider both standard and curly. | |
'/\b([a-z0-9]*[\'|’][a-z0-9]*)\b/isu' | |
] |
Parameters
Type | Parameter | Default | Since |
---|---|---|---|
String{} | $patterns |
See gist above | 4.0.0 |
Examples
All hooks should be added to your custom SearchWP Customizations Plugin.
Add custom regular expression pattern
<?php | |
// Add custom regular expression pattern to SearchWP. | |
add_filter( 'searchwp\tokens\regex_patterns', function( $patterns ) { | |
$my_patterns = [ | |
"/([0-9]{1,2}\\/[0-9]{1,2})/is", // Retain measurement details. | |
]; | |
// We want our pattern to be considered top priority. | |
return array_merge( $my_patterns, $patterns ); | |
} ); |