Regexp d'amélioration typographique
Salut salut,
Je suis en train de me faire une petite regexp pour transformer automatiquement les mots style 2èm, 14éme, 7ième en joli code propre du style 14<sup>è</sup>.
Je veux que quel que soit le format rentré, ça me sorte le chiffre suivi de <sup>è</sup>.
Les formats suivants doivent être reconnus :
4é, 4è, 4e
4ém, 4èm, 4em
4éme, 4ème, 4eme
4ié, 4iè, 4ie
4iém, 4ièm, 4iem
4iéme, 4ième, 4ieme
Donc voilà la regexp telle que je l'ai écrite :
Code:
ret = ret.replace(/\b(\d+)i?[eéè](me?)?\b/g, "$1<sup>è</sup>");
Un ou plusieurs chiffres, éventuellement un "i", (un e ou un é ou un è), éventuellement un m suivi éventuellement un e
Et voilà le résultat :
Sans accent : matche à tous les coups
2e => ok, retourne 2<sup>è</sup>
2em => ok, retourne 2<sup>è</sup>
2eme => ok, retourne 2<sup>è</sup>
2ie => ok, retourne 2<sup>è</sup>
2iem => ok, retourne 2<sup>è</sup>
2ieme => ok, retourne 2<sup>è</sup>
Accent aigu :
2é => ne matche pas
2ém => ok, retourne 2<sup>è</sup>
2éme => ok, retourne 2<sup>è</sup>
2ié => ne matche pas
2iém => ok, retourne 2<sup>è</sup>
2iéme => ok, retourne 2<sup>è</sup>
Accent grave :
2è => ne matche pas
2èm => ok, retourne 2<sup>è</sup>
2ème => ok, retourne 2<sup>è</sup>
2iè => ne matche pas
2ièm => ok, retourne 2<sup>è</sup>
2ième => ok, retourne 2<sup>è</sup>
Ce que je pige pas, c'est que "2e" matche, "2em" matche, "2èm" matche, mais "2è" ne matche pas. Quelqu'un peut m'éclairer ? Merci d'avance...