Reputation: 3074
So the official documentation says absolutely nothing about the tilde sign (~
) used in regexp patterns, for example as in the seeCurrentUrlMatches()
function. Yet, it is used extensively in the documentation.
In the exmample, the regexp looks like this:
$I->seeCurrentUrlMatches('~$/users/(\d+)~');
grabFromCurrentUrl('(\d+)')
returns:
" (\d+)" Fail Nothing to grab. A regex parameter required.
$
)
position makes no sense (I presume the dollar sign has a completely
different meaning in this context /my guess would be shorthand for the home path/.)~
captures the character itselfMy conclusion is the regexp pattern that Codeception expects from you is clearly non-standard. So what does the ~
and $
do? Where can I find a throughout documentation or article about this?
Upvotes: 1
Views: 564
Reputation: 14102
Codeception doesn't use any special regex functions.
seeCurrentUrlMatches
method calls PhpUnit's assertRegexp
method which uses preg_match
under the hood.
preg_match
uses pattern delimiters. Delimiter can be any non-alphanumeric character.
/
is the most common delimiter, but it is inconvenient for matching URL, because you would have to escape a lot of slashes in URL, so using ~
as a delimiter avoids need to escape.
$
at the beginning of pattern is probably a simple mistake in example.
Upvotes: 3