4

渡されたテキストが有効なPCREであることをJS関数で検証するための既存の関数(または誰かが既存のコードを書いた可能性があります)はありますか?私は狂ったようにグーグルしてきましたが、私が見つけた最も近いものは、「PCRE_JAVASCRIPT_COMPAT」(PCRE互換性フラグ)またはPHPとJavascriptの両方での入力の検証に関する議論です。

JavascriptREGEX検証に最も近いものは次のとおりです。

try {
    "".match(regex);
    return true;
} catch (e) {
    return false;
}

これは、JS(ECMA)正規表現とPHP(PCRE)正規表現の違いを考慮していません。これは明らかに問題ですが、この2つの違いについて明確な説明は見つかりませんでした。

何か助けてください?

4

2 に答える 2

3

PHPに対してチェックするための迅速で汚いAJAXコード:

Javascript:

function regexValidator(value) {
    var req = new XMLHttpRequest();
    req.onreadystatechange = function() {
        if (req.status == 200 && req.responseText.length() > 0) {
            alert(req.responseText);
        }
    };
    req.open('GET', 'http://example.com/validator.php?r=' + escape(value), true);
    req.send();
}

PHP:

<?php
if (isset($_GET['r'])) {
    if (preg_match(urldecode($_GET['r']), '') === FALSE) {
        echo "NOT VALID";
    } else {
        echo "VALID";
    }
}
于 2012-08-29T14:39:26.963 に答える
2

興味深い質問です。Regex baddass Steven Levithanは、Javascriptの正規表現を解析し、プロセスで部分的な(完全ではない場合)検証を行う、気の利いたregex蛍光ペン/カラーライザーを作成しました。見つかった構文エラーを強調表示します。しかし、PCRE正規表現フレーバーに関しては...

私はJavascript(GitHub)プロジェクトを持っています。その呼ばれる:動的正規表現蛍光ペン。グループと文字クラスのブラケットマッチングに関してPCRE構文を検証します。ただし、他の構文要件はチェックしません。正規表現に興味がある場合は、おそらく一見の価値があります-とにかく見てください。テスターページは、フリースペース以外のモードで記述された長くて複雑な正規表現を(不十分に)検査するときに非常に便利だと思います。角かっこの上にマウスを置くと、一致する角かっこが強調表示され、キャプチャグループの場合は、ポップアップツールチップにグループ番号が表示されます。

参照:動的正規表現蛍光ペンテスター

于 2012-08-27T15:28:20.933 に答える