2016-03-28 11 views
0

Ist es möglich, eine Art Regex zu haben, die Regex entspricht?Regex, das Regex auswertet

Zum Beispiel würde die Regex /(.*?)/ aber nicht /(.?+/ entsprechen.

Ich bin nicht wirklich auf der Suche nach einem Beispiel (da ich absolut keine Ahnung hätte, wie es funktioniert und brauche ich auch wirklich nicht), aber ich würde gerne sehen, was Sie als Arbeitsbeispiel vorfinden.

Vielen Dank im Voraus!

+0

ja, es ist möglich, aber nur mit regex Motoren, die über eine Funktion, um mit ausgewogener Klammer haben . –

+0

Meinen Sie nur, wenn der Regex gültig ist? –

+0

Theoretisch '. *' Wird alle Regexe übereinstimmen. Angesichts der Unicode-Unterstützung. Aber ich verstehe nicht, was Sie hier erreichen wollen. –

Antwort

0

Kurze Antwort: Vielleicht.


Lange Antwort: Es wird viel mehr kompliziert sein, dann wollen Sie. Nicht zu vergessen, es gibt viele verschiedene Varianten von regulären Ausdrücken und (je nachdem, wie detailliert Sie diese Ausdrücke überprüfen möchten) müssen Sie auswählen, welchen Geschmack Sie validieren möchten. Außerdem sind einige Varianten regulärer Ausdrücke nicht robust genug, um einige der schwierigeren Dinge zu erledigen, die dieser Ausdruck benötigen würde.


vorgeschlagene Antwort: Sie nicht einen regulären Ausdruck verwenden, aber ernten die innere Kraft der alles, was Programmiersprache Sie verwenden. Mit anderen Worten, versuchen Sie einfach, den Ausdruck zu verwenden und achten Sie auf eine Ausnahme (oder einen anderen Fehler).

Zum Beispiel in Javascript:

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

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

Zum Beispiel in PHP:

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

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