评估正则表达式的正则表达式

时间:2016-03-28 16:47:22

标签: regex theory

是否可以使用某种与正则表达式匹配的正则表达式?

例如,正则表达式匹配/(.*?)/但不匹配/(.?+/

我不是真的在寻找一个例子(因为我完全不知道它是如何工作的,我真的不需要它)但我希望看到你提出的实例。

提前致谢!

1 个答案:

答案 0 :(得分:0)

简答:也许。

更长的回答:它会变得比你想要的更复杂。更不用说,有许多不同风格的正则表达式(取决于你想要验证这些表达式的深度),你需要选择要验证的风格。此外,一些正则表达式的强大不足以完成这个表达式需要做的一些更困难的事情。

建议的答案:不要使用正则表达式,但要获得您正在使用的任何编程语言的内部能力。换句话说,只是尝试使用表达式并注意异常(或任何其他失败)。

例如,在Javascript中:

function isRegexValid(expression) {
    try {
        new RegExp(expression);
        return true;
    } catch(e) {
        return false;
    }
}

console.log(isRegexValid('(.*?)')); // true
console.log(isRegexValid('(.?+'));  // false

例如,在PHP中:

function isRegexValid($expression) {
    return preg_match($expression, '') !== false;
}

var_dump(isRegexValid('/(.*?)/')); // true
var_dump(isRegexValid('/(.?+/'));  // false