Comme vous le savez probablement, | est l'opérateur "ou", et la chaîne de caractères null match le mot null. Ainsi, il peut être lue comme <your previous pattern> or null.
Si vous voulez le modèle pour correspondre à la valeur null-chaîne, la réponse est que c'est impossible. Qui est, il n'ya aucun moyen que vous pouvez faire, par exemple, Matcher.matches() retourner true pour une valeur nulle de la chaîne d'entrée. Si c'est ce que vous êtes après, vous pourriez vous en sortir avec à l'aide de la regexp et correspondant non sur str mais sur ""+str qui aurait pour résultat "null" si str fait est égal à null.
devrait le faire. Selon la façon dont vous utilisez l'expression régulière, vous pourriez avoir besoin pour l'ancrer dans l'ordre pour être sûr qu'il sera toujours correspondre à la ensemble chaîne et pas seulement à cinq chiffres sous-chaîne à l'intérieur d'un à huit chiffres de la chaîne:
^(?:[0-9]{5}|[0-9]{10}|null)$
^ et $ d'ancrage de la regex, (?:...) est un non-capture d'un groupe qui contient l'alternance.
Edit: Si vous voulez dire null=="chaîne vide", puis utiliser
Si par null vous voulez dire que la chaîne vide, vous souhaitez:
OriginalL'auteur Jez
Simplement ajouter
|null
:Comme vous le savez probablement,
|
est l'opérateur "ou", et la chaîne de caractèresnull
match le mot null. Ainsi, il peut être lue comme<your previous pattern> or null
.Si vous voulez le modèle pour correspondre à la valeur null-chaîne, la réponse est que c'est impossible. Qui est, il n'ya aucun moyen que vous pouvez faire, par exemple,
Matcher.matches()
retourner true pour une valeur nulle de la chaîne d'entrée. Si c'est ce que vous êtes après, vous pourriez vous en sortir avec à l'aide de la regexp et correspondant non surstr
mais sur""+str
qui aurait pour résultat"null"
sistr
fait est égal ànull
.OriginalL'auteur aioobe
devrait le faire. Selon la façon dont vous utilisez l'expression régulière, vous pourriez avoir besoin pour l'ancrer dans l'ordre pour être sûr qu'il sera toujours correspondre à la ensemble chaîne et pas seulement à cinq chiffres sous-chaîne à l'intérieur d'un à huit chiffres de la chaîne:
^
et$
d'ancrage de la regex,(?:...)
est un non-capture d'un groupe qui contient l'alternance.Edit: Si vous voulez dire
null
=="chaîne vide", puis utiliserOriginalL'auteur Tim Pietzcker