4

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

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

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

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

请问有什么帮助吗?

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

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

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

请参阅:动态正则表达式荧光笔测试器

于 2012-08-27T15:28:20.933 回答