簡體   English   中英

Yii2 驗證與 XRegExp,\\p{L} 不起作用

[英]Yii2 validation with XRegExp, \p{L} not working

我使用Yii2框架和我有一個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} 總是失敗,但是如果我更改 /^[AZ]+$/ 之類的模式,它可以完美地工作。

我正在使用 1.3.0 xregexp-all.js。 它被添加到 \\assets\\AppAsset.php 中的AssetBundle類中

我在玩正則表達式時確實注意到,當我做錯並顯示異常時, \\\\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;
}

在我的情況下\\p{L}被解釋為p{L}所以我只是添加了一個反斜杠來轉義p ,結果是\\\\p{L}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM