2

文字列形式の正規表現があり、その正規表現をグリッドセルにバインドしたいと思います。そのため、そのセルの値はその正規表現に対して検証されます。RegExp変換と値のテストにJavaScriptライブラリを使用しています。しかし、使用される最も単純な正規表現であっても、false毎回戻るか、私にを与えます。invalid regex

これは私が使用している方法です:

addCellValidator(columnObj[0].name, new CellValidator({                 
    isValid: function (value) {
        var regex = new RegExp("/^[a-zA-Z\-]+$/");
        return value == "" || (regex.test(value)); 
    }
}));

それは、必要なフォーマットまたは特別なパターンRegExpですか?

4

2 に答える 2

6

これは有効な JavaScript コードですが、次のようになります。

new RegExp("/^[a-zA-Z\-]+$/")

...あなたが考える正規表現を生成しません。これは次と同等です:

/\/^[a-zA-Z-]+$\//

次のことを行う必要があります。

  • 区切り文字を取り除く
  • flagsを抽出して解析します(存在する場合)。例:

    "/^[a-z-]+$/i" ---> new RegExp("^[a-z-]+$", "i")
    

もう 1 つ注意:-バックスラッシュでエスケープしても意味がありません。文字クラス内のリテラルに一致させたい場合は-、最初または最後の項目として配置する必要があります。

于 2013-02-26T13:01:29.640 に答える
3

/ /を文字列に追加しただけで、これは機能します。

addCellValidator(columnObj[0].name, new CellValidator({
                isValid: function (value) {
                    var regex = new RegExp("^[a-zA-Z\-]+$");
                    return value == "" || (regex.test(value)); }
            }));
于 2013-02-26T12:48:39.490 に答える