Preg Match Chaîne Vide

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

J'ai besoin de quelque chose comme:

/([0-9]|[NULL STRING])/
31
demandé sur sdwilsh 2009-11-27 19:23:01

5 réponses

Vous pouvez utiliser ^ pour correspondre au début de la ligne, et $ pour correspondre à la fin de la 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 étant vide) serait plus facile à réaliser avec ^[0-9]?$.

61
répondu Mikael Auno 2009-11-27 16:28:07

Avec la regex de PHP, vous pouvez simplement dire:

/(\d|)/

Il peut être utile...

4
répondu Jrgns 2009-12-29 20:22:33

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

1
répondu FrustratedWithFormsDesigner 2009-11-27 16:34:25

J'ai dû le faire, en java, pour les 4 derniers pour un numéro CC. Le champ est facultatif, il peut donc être vide ou 4 chiffres. Ma solution est:

^\d{4}$|^$

Le passage d'un null dans la mode java typique entraîne une exception de pointeur null:

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

Cependant, je pense que c'est plus un problème D'implémentation Java.

1
répondu Pete B. 2013-07-11 14:18:43

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, pensez à la retourner et Pas correspondre au opposé (double négatif).
Dans cet exemple, tout ce qui est pas (^) un non chiffres (\D) pour zéro ou une fois (?):

[^\D]?

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

Correspond à un "" (), "0", "1" .. "9", mais pas un "", (<space>), "A" (non chiffres) ou "123" (plus de chaîne).

0
répondu iRon 2018-04-28 09:09:18