Java脚本函数中的PHP(PCRE)验证


PHP (PCRE) Validation in a Javascript Function

JS函数中是否有现有函数(或者可能有人编写了一些现有代码)要验证传递的文本是有效的PCRE?我一直在谷歌上疯狂搜索,但我能找到的最接近的东西只是"PCRE_JAVASCRIPT_COMPAT"(这是一个PCRE兼容性标志)或关于在PHP和JAVASCRIPT中验证输入的讨论。

我见过的最接近Javascript REGEX验证的东西是:

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

这并没有考虑JS(ECMA)正则表达式和PHP(PCRE)正则表达式之间的差异——这显然是一个问题,但我还没有发现对两者之间差异的明确讨论。

请帮忙吗?

Quick&脏AJAX代码检查PHP:

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";
    }
}

有趣的问题。Regex baddass Steven Levitan编写了一个漂亮的Regex荧光笔/着色器,它解析Javascript正则表达式,并在此过程中进行部分(如果不是完全)验证。它会突出显示它发现的任何语法错误。但是关于PCRE正则表达式的味道。。。

我有一个Javascript(GitHub)项目,可能会有所帮助。它被称为:动态Regex荧光笔。它将验证关于组和字符类的括号匹配的PCRE语法。但是,它不检查任何其他语法要求。如果您喜欢regex,那么它可能无论如何都值得一看。我发现测试页面在检查以非自由间隔模式编写的长而复杂的正则表达式(糟糕)时非常有用。当您将鼠标悬停在一个括号上时,匹配的括号将高亮显示,如果它是一个捕获组,则会在弹出的工具提示中提供组号。

请参阅:Dynamic Regex Highlighter Tester