Par défaut, l'opérateur générique .
ne pas correspondance des caractères de saut de ligne (\n
, \r
). Dans d'autres langues, il existe un mode (parfois appelé mode ligne unique) pour que .
corresponde à n'importe quoi. Javascript ne l'a pas pour une raison quelconque. Si vous voulez l'utilisation équivalente [\s\S]
, ce qui signifie tout caractère d'espace blanc ou est pas d'espace blanc si:
/<img alt="([\s\S]+?)" src="http:\/\/(.+?)\.(jpg|gif)">/
Voir Javascript regex multiline flag doesn’t work.
Aussi, j'ai échappé le .
avant jpg|gif
sinon il va correspondre à n'importe quel caractère et non le .
que vous avez l'intention. Cela étant dit, l'analyse du code HTML avec des regex est une très mauvaise idée. De plus, à moins d'information pertinent manque à votre question, vous pouvez le faire facilement avec jQuery attribute selectors:
$("img[src='http://.*\.gif|jpg']").each(function() {
var alt = $(this).attr("alt");
var src = $(this).attr("src");
...
});
Ou si vous voulez qu'il y ait un attribut alt
:
$("img[alt][src='http://.*\.gif|jpg']").each(function() {
var alt = $(this).attr("alt");
var src = $(this).attr("src");
...
});
** DO PAS PARSE HTML en utilisant des expressions régulières **! http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – SLaks
Ah, la balise 'question'. Au cas où nous aurions des questions qui ne sont pas des questions ... – SLaks
La réponse que vous avez sélectionnée est en fait incorrecte. Vois ma réponse. – cletus