2011-11-01 3 views
0

Je suis bloqué avec un simple problème de regex. Ce que je veux faire est de vérifier une URL pour voir si elle contient le mot ajax et si elle correspond alors à l'URL.Regex Url Check

Par exemple URL donnée localhost/ajax/image/get doit correspondre et retourner localhost/ajax/image/get

Cependant localhost/image/get ne doit pas correspondre. J'ai des connaissances de base de regex, mais je n'ai pas réussi à obtenir quelque chose qui fonctionne pour cela.

Des suggestions? Je suis sûr que c'est un cas assez simple.

J'utilise ceci pour une règle de réécriture mod

La règle de réécriture mod est RewriteRule ^. ? \ Bajax \ b. ajax.php $? Url = $ 1 [PT, L]

URL demandée http://localhost:93/public/ajax/image/

Il redirige vers le fichier ajax.php mais les valeurs d'URL ne sont pas conservées.

J'ai une autre règle qui est d'ordre général comme suit RewriteRule^(. *) Index.php $? Url = $ 1 [PT, L]

URL demandé http://localhost:93/public/imgage/get/

Lorsque cette redirige vers index.php il a/public/image/get/dans l'url valeur GET

+0

''/ajax/'sera toujours le dossier racine pour une demande comme celle-ci? – Clive

+0

pas toujours, tant que sa partie de l'URL – madlad

Répondre

1

J'ai résolu le problème, la regex que je cherchais est ^ (ajax.) $

J'avais essayé^(ajax) $ mais cela n'a pas de sens.

Merci pour l'aide

0

Qu'en est-

[a-z/]*ajax[a-z/]* 

il pourrait utiliser un certain raffinement, alors laissez-moi kno w si cela doit être amélioré.

+0

je ne pense pas que cela va correspondre parce que je ne pense pas qu'il ne correspondra pas à la partie http: //. J'ai essayé cela et il ne parvient pas à correspondre – madlad

+0

est la partie xxxx: // va toujours être là? si oui, essayez [az] +: // [az ._/-] * ajax [az ._/-] * –

1

Expression simple. Vous avez plusieurs tags, donc je ne suis pas sûr de savoir quelle est votre plateforme. S'il est java:

Pattern regex = Pattern.compile("^.*?\\bajax\\b.*$"); 

En général, cela devrait être l'expression rationnelle:

/^.*?\bajax\b.*$/ 

Explication:

"^" +  // Assert position at the beginning of the string 
"." +  // Match any single character that is not a line break character 
    "*?" +  // Between zero and unlimited times, as few times as possible, expanding as needed (lazy) 
"\\b" +  // Assert position at a word boundary 
"ajax" + // Match the characters “ajax” literally 
"\\b" +  // Assert position at a word boundary 
"." +  // Match any single character that is not a line break character 
    "*" +  // Between zero and unlimited times, as many times as possible, giving back as needed (greedy) 
"$"   // Assert position at the end of the string (or before the line break at the end of the string, if any) 

Enfin je suggère this pour davantage de lecture.

+0

Salut, merci pour l'aide, celle des expressions rationnelles que j'essayais, je m'attendrais à ce que cela fonctionne . Cependant en utilisant un plugin netbeans pour tester la regex et une URL mod_rewrite Apache pour où je vais placer la règle ne semblent pas correspondre. J'ai eu 4 tags car je dois avoir 4 tags pour poser une question. Je vais poster ma règle mod_rewrite et l'URL que j'ai frappé – madlad

0

Il devrait être aussi simple que:.

Pattern.matches(regex, str) 

si

Pattern.matches ("ajax", str)

où str est la chaîne URL étant adoptée en

+0

Salut Paul, je l'utilise dans une réécriture mod, comme je testais la regex dans un plugin netbeans et je suis nécessaire de mettre 4 tags sur la question que je mets Java comme une étiquette. Voir ci-dessus pour des notes supplémentaires – madlad

+0

@Paul cela correspondra également blajaxbla – FailedDev

+0

@failedDev pas si vous utilisez "ajax." – Standage