Проверка Yii2 с XRegExp, \ p {L} не работает

Я использую Yii2 Framework и у меня есть Validator это должно сделать проверку на стороне клиента. У меня есть регулярное выражение, которое выглядит так: /^[\\p{L}]+$/u для простоты, но мое настоящее регулярное выражение немного сложнее, но именно часть \ p {L} и вызывает проблемы.

И вот мой код, как это в классе валидатора:

public function clientValidateAttribute($model, $attribute, $view)
{
$message = json_encode($this->message, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
return <<<JS
if (!XRegExp('/^[\\p{L}]+$/u').test(value)) {
messages.push($message);
}
JS;
}

Проблема в том, что это всегда не удается для \ p {L}, но если я изменяю шаблон для чего-то вроде / ^ [A-Z] + $ /, это работает безупречно.

Я использую 1.3.0 xregexp-all.js. Добавляется в AssetBundle класс в \ assets \ AppAsset.php

0

Решение

Я заметил, когда я играл с моим регулярным выражением, что, когда я сделал это неправильно и получил исключение, \\p{L} был интерпретирован как p{L}, Поэтому после некоторых попыток я обнаружил, что по какой-то причине мне потребовалось четыре обратных слеша, чтобы это интерпретировалось как \p{L}, Окончательный код, который работает:

public function clientValidateAttribute($model, $attribute, $view)
{
$message = json_encode($this->message, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
return <<<JS
if(!XRegExp('^[\\\\p{L}]+$').test(value)) {
messages.push($message);
}
JS;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]