Когда я использую это для проверки строки «admin / customer / person / 1» в регулярном admin/customer/person/[0-9]+, программа сообщает мне, что регулярное выражение является правильным.

Но когда я использую Str::is("admin/customer/person/[0-9]+", "admin/customer/person/1") эту функцию, результат неверен.

То же самое имеет следующее

Str::is("admin/customer/person/([0-9]+)/edit", "admin/customer/person/1/edit");//result is false
Str::is("admin/customer/person/[0-9]+", "admin/customer/person/1");//false
Str::is("admin/customer/person/([0-9]+)", "admin/customer/person/1");//false
Str::is("admin/customer/person/\[0-9]+\\", "admin/customer/person/1");//false
0
local.clk 17 Апр 2019 в 11:38

2 ответа

Лучший ответ

Я не думаю, что вы можете вызвать Str::is со строкой выражения регулярного выражения, если вы посмотрите в исходном коде функции, он применяет preg_quote в вашей строке перед применением preg_match, поэтому ваше регулярное выражение будет экранировано специально. Я думаю, что он не предназначен для вашего случая использования, вы должны напрямую использовать регулярные выражения и preg_match.

1
namelivia 17 Апр 2019 в 08:56

Метод is не будет соответствовать традиционным регулярным выражениям:

Str::is('[0-9]', '1');
// false
0
Junior Gantin 17 Апр 2019 в 09:01