j'ai besoin du code PHP pour détecter si une chaîne contient 4 ou plusieurs numéros écrits consécutifs (0 à 9), comme:expression régulière pour détecter des nombres écrits comme des mots
ou
"zero eight nine nine seven three six six"
j'ai besoin du code PHP pour détecter si une chaîne contient 4 ou plusieurs numéros écrits consécutifs (0 à 9), comme:expression régulière pour détecter des nombres écrits comme des mots
ou
"zero eight nine nine seven three six six"
/(?:(?:^|\s)(?:one|two|three|four|five|six|seven|eight|nine|ten)(?=\s|$)){4,}/
code PHP:
if (preg_match(...put regex here..., $stringToTestAgainst)) {
// ...
}
note: Plus wor ds (par ex. 'douze') peut facilement être ajouté à l'expression rationnelle.
Vous pouvez le faire comme ceci:
\b(?:(?:zero|one|two|three|four|five|six|seven|eight|nine)(?: +|$)){4}
if (preg_match("/(?:\b(?:(one)|(two)|(three)|(four)|(five)|(six)|(seven)|(eight)|(nine))\b\s*?){4,}/", $variable_to_test_against, $matches)) {
echo "Match was found <br />";
echo $matches[0];
}
EDIT:
espace Ajouté (s) dans l'expression régulière - grâce à Kobi.
Vous n'avez pas d'espaces entre les mots? – Kobi
Une autre option est:
\b(?:(?:one|two|three|four|five|six|seven|eight|nine|zero)\b\s*?){4}
C'est à peu près la même chose que le reste. Le seul bit intéressant est la partie \s*?
- qui va paresseusement correspondre aux espaces entre les mots, de sorte que vous ne vous retrouvez pas avec des espaces supplémentaires après la séquence de 4 mots. Le \b
avant qu'il ne s'assure il y a au moins un seul espace (ou autre séparateur après le dernier mot, donc !a b c d!
correspondra)
+1 J'aime assez cette approche. Voici un lien Rubular pour cela: http://rubular.com/r/Fm4dGwkNGg ... Vous avez oublié zéro cependant. –
@Mark - Merci. Je l'ai testé là aussi, j'ai juste oublié le lien. J'ai zéro, mais il n'est pas trié ':)' – Kobi
Oh oui, il est trié dans l'ordre du clavier. J'aurais dû remarquer que zéro est l'un des exemples dans le lien rubulaire. Pardon. :) –
Les nombres peuvent être arbitrairement grands? – phimuemue
Est-ce que "cent quarante six" un numéro? Deux chiffres? Trois? Quatre? –
seulement les nombres simples zéro jusqu'à neuf –