diff --git a/phpBB/includes/acp/acp_bbcodes.php b/phpBB/includes/acp/acp_bbcodes.php
index 2220d5cbaa..7bfbe5163f 100644
--- a/phpBB/includes/acp/acp_bbcodes.php
+++ b/phpBB/includes/acp/acp_bbcodes.php
@@ -110,6 +110,7 @@ class acp_bbcodes
);
$bbcode_tokens = array('TEXT', 'SIMPLETEXT', 'INTTEXT', 'IDENTIFIER', 'NUMBER', 'EMAIL', 'URL', 'LOCAL_URL', 'RELATIVE_URL', 'COLOR');
+ $bbcode_tokens = array_merge($bbcode_tokens, ['ALNUM', 'CHOICE', 'FLOAT', 'HASHMAP', 'INT', 'IP', 'IPPORT', 'IPV4', 'IPV6', 'MAP', 'RANGE', 'REGEXP', 'TIMESTAMP', 'UINT']);
/**
* Modify custom bbcode template data before we display the add/edit form
diff --git a/phpBB/language/en/acp/posting.php b/phpBB/language/en/acp/posting.php
index 3bff6b9185..f252864eb6 100644
--- a/phpBB/language/en/acp/posting.php
+++ b/phpBB/language/en/acp/posting.php
@@ -88,6 +88,20 @@ $lang = array_merge($lang, array(
'LOCAL_URL' => 'A local URL. The URL must be relative to the topic page and cannot contain a server name or protocol, as links are prefixed with ā%sā',
'RELATIVE_URL' => 'A relative URL. You can use this to match parts of a URL, but be careful: a full URL is a valid relative URL. When you want to use relative URLs of your board, use the LOCAL_URL token.',
'COLOR' => 'A HTML colour, can be either in the numeric form #FF1234 or a CSS colour keyword such as fuchsia or InactiveBorder',
+ 'ALNUM' => 'Characters from the latin alphabet (A-Z) and numbers.',
+ 'CHOICE' => 'A choice of specified values, e.g. {CHOICE=spades,hearts,diamonds,clubs}. The values are treated as case-insensitive by default and can be treated case-sensitive by specifying the caseSensitive option: {CHOICE=Spades,Hearts,Diamonds,Clubs;caseSensitive}',
+ 'FLOAT' => 'A decimal value, e.g. 0.5.',
+ 'HASHMAP' => 'Maps strings to their replacement in the form {HASHMAP=string1:replacement1,string2:replacement2}. Case-sensitive. Preserves unknown values by default.',
+ 'INT' => 'An integer value, e.g. 2.',
+ 'IP' => 'A valid IPv4 or IPv6 address.',
+ 'IPPORT' => 'A valid IPv4 or IPv6 address with port number.',
+ 'IPV4' => 'A valid IPv4 address.',
+ 'IPV6' => 'A valid IPv6 address.',
+ 'MAP' => 'Maps strings to their replacement in the form {MAP=string1:replacement1,string2:replacement2}. Case-insensitive. Preserves unknown values by default.',
+ 'RANGE' => 'Accepts an integer in the given range, e.g. {RANGE=-10,42}.',
+ 'REGEXP' => 'Validates its value against a given regexp, e.g. {REGEXP=/^foo\w+bar$/}.',
+ 'TIMESTAMP' => 'A timestamp such as 1h30m10s which will be converted to a number of seconds. Also accepts a number.',
+ 'UINT' => 'An unsigned integer value. Same as {INT}, but rejects values less than 0.',
),
));