Ich erhalte ein Datum in der Nachricht als Zeichenfolge. Der folgende reguläre Ausdruck wird bestätigen, es zumindest in dem Format, das ich weiß, dass ich umgehen kann:Validator.matchesRegex in Mule explodiert mit Grundmuster
^[0-9]{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$
aber wenn ich bieten diese regex auf die validator.matchesRegex Methode in der Mule Expression Sprache wie so:
<when expression="#[validator.matchesRegex(payload.DateOfBirth,'^[0-9]{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$') == false]">
<set-variable variableName="validation_message" value="{"error": "Invalid DateOfBirth"}" doc:name="invalid DateOfBirth"/>
</when>
ich erhalte den folgenden Fehler:
org.mule.api.MessagingException: [Error: illegal escape sequence: -]
[Near : {... eOfBirth,'^[0-9]{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[1 ....}]
^
[Line: 1, Column: 55] (org.mule.api.expression.InvalidExpressionException). Message payload is of type: HashMap
Update ich zwei neue a versucht haben, lterations:
Verdoppelung meine geschweiften Klammern nach oben wie so:
^[0-9] {{4}} - (? 0 [1-9] | 1 [012]) - (0 ? [1-9] | [12] [0-9] | 3 [01])
$, aber ich den gleichen Fehler, aber ein paar Zeichen aus:
[Error: illegal escape sequence: -]
[Near : {... fBirth,'^[0-9]{{4}}\-(0?[1-9]|1[012])\-(0?[1-9]|[1 ....}]
^
[Line: 1, Column: 57] (org.mule.api.expression.InvalidExpressionException). Message payload is of type: HashMap
unescaping die Bindestriche zwischen den Zahlen
'^ [0-9] {{4}} - (0? [1-9] | 1 [012]) - (0? [1-9] | [12] [0 -9] | 3 [01]) $
aber ich bekomme die folgende Fehlermeldung:
org.mule.api.MessagingException: Execution of the expression "validator.matchesRegex(payload.DateOfBirth,'^[0-9]{{4}}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])$') == false" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: HashMap
ich habe das Muster verändert nicht die Verwendung Escape-Backslash, um nur den Bindestrich zu akzeptieren:
^[0-9] {4}. (0? [1-9] | 1 [012]). (0? [1-9] | [12] [ 0-9] | 3 [01]) $ Ich habe '-' durch 'ersetzt.' das ist nicht wirklich was ich will, aber es validiert zumindest die Anzahl Portionen. Ich habe bestätigt, dass das funktioniert. es erlaubt nur ungültige Werte wie ‚2016 02_23!‘, wenn es wirklich nur ‚2016.02.23‘
TL erlauben sollte; DR: gibt es einen Fehler mit regulären Ausdrücken innerhalb MEL, wenn Sie sind versuchen, dem Dash-Charakter zu entkommen?
Ich denke, Sie sollten nicht die Bindestriche entkommen. –
Das Problem kann auch mit '{}' sein. Versuchen Sie, sie in Ihrem Muster zu verdoppeln. –
danke, ich werde beides versuchen! –