Question

Comment preg_match pour une chaîne nulle (vide) ??

J'ai besoin de quelque chose comme:

/([0-9]|[NULL STRING])/
Était-ce utile?

La solution

Vous pouvez utiliser ^ pour faire correspondre le début de ligne et $ pour faire correspondre la fin de ligne, ainsi l'expression régulière ^$ correspondrait à une ligne / chaîne vide.

Votre exemple spécifique (une ligne / chaîne contenant un seul chiffre ou vide) serait plus facile à réaliser avec ^[0-9]?$.

Autres conseils

Avec PHP regex, vous pouvez simplement dire:

/(\d|)/

Cela peut être utile ...

Vous pouvez également faire correspondre un caractère null avec \0. Est-ce ce que vous vouliez dire par [NULL STRING]? Cette expression pourrait être /([0-9]|\0)/.

Je devais le faire, en java, pour les 4 derniers pour un numéro CC. Le champ est facultatif, il peut donc être vide ou composé de 4 chiffres. Ma solution est la suivante:

^\d{4}$|^$

La transmission de cette valeur à null dans le mode java typique entraîne une exception de pointeur null:

String myString = null;
last4Pattern.matcher(myString).matches(); //Null in this case.

Cependant, j'estime qu'il s'agit davantage d'un problème d'implémentation de Java.

Comme il n'est pas facile de faire correspondre une chaîne vide mais qu'il est généralement possible de faire correspondre tout ce qui n'est pas une chaîne vide, envisagez de la retourner et pas ne correspond à la opposée (double négatif).
Dans cet exemple, tout ce qui est pas (^) un non -digit (\D) pour zéro ou une fois (?):

[^\D]?

(ou pour un ascii spécifique: [^\x00-\x29\x3a-\xff]? , ou unicode: [^\u0000-\u0029\u003a-\uffff]? )

Correspond à un " " ( < chaîne vide > ), & "; 0 &"; & "; > 1 " .. & "; 9 &"; mais pas un & "; &"; ( < espace > ), & "; A &"; (non numérique) ou & "; 123 &"; (toute chaîne plus longue).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top