J'ai des chaînes comme suit: J'ai besoin de lire les deux derniers caractères de chaque chaîne comme suit. Il y aura au plus un nombre après les personnages à la fin, quels que soient les chiffres.
J'ai besoin de lire les derniers caractères comme suit: p> J'ai utilisé la chaîne de regex comme suit, mais il ne lit que les deux derniers caractères de deux / trois quand il n'y a pas d'autres numéros suivants. p> toute aide est appréciée. p> p>
4 Réponses :
bonne question, nous utiliserions la ponctuation ou l'espace du côté droit de nos deux ou trois lettres souhaitées avec une expression simple: et sur sa gauche, nous utiliserions l'existant Numéro comme limite gauche. P> p> Démo h3>
const regex = /[0-9]([A-Z]{2,3})([0-9])?[,.\s]/gm;
const str = `M0122PD12XS1,
M1213234NW,
M1213234EFA1.
M0122PD12XS1
M1213234NW
M1213234EFA1
`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
La question implique qu'il n'y a pas de symboles de ponctuation à la fin, et je soupçonne ces , code> et . Code> ne sont que "formatage" des marques de ponctuation.
Ceci pourrait être ce dont vous avez besoin: look ici < / a> pour tester et ici pour la visualisation. P> p>
Je n'ai besoin que de tirer les deux ou trois derniers caractères. Pas besoin de nombre de caractères. Par exemple, M123123XS1, j'ai besoin de XS uniquement.
@PCG J'ai tapé la chaîne que vous avez fournie et cela a fonctionné comme vous avez demandé. La regex ne correspond même pas aux numéros dans les lettres finales uniquement indiquées par [a-za-z] code>
Je pense que cela devrait être p>
Si aucune ponction requise dans la ligne se termine, juste p>
où ([a-z] {2,}) (?: [. \ s \ d] +)? $ code> p> p> P>
([a-z] {2,}) (?: [\ d] +)? $ code> p> p>
[AZ] {2,} code> a 2 lettres et plus de lettres, [\ d] +)? code> sont des numéros optionnels à la fin de la chaîne. P >
Pourquoi Obfusque autant? (?: [\ d] +)? code> = \ d * code>.
J'ai seulement besoin des deux derniers caractères. Mais votre script tire des nombres avec les derniers caractères.
@PCG: Non, il y a ?: Code> au début du deuxième groupe, le résultat est donc juste [a-z] {2,} code>. Vous pouvez l'essayer, rien de plus facile :-) Il n'y a rien de tel que prend juste le dernier groupe code> dans Regex, vous devez le définir autre chose. Si vous ne voulez pas le reste (numéro), il suffit d'ajouter ?: Code> pour les ignorer.
[A-Z] {2,3} ((? = \ d \ b) | (? = \ r) | (? =. =.) | (? = \ b)) p>
trouve 2 ou 3 caractères alpha [A-Z] {2,3} P>
jusqu'à, mais non compris (? =) soit p>
\ d {2,3} (? = \ d * $) code> ou[a-za-z] {2,3} (? = \ d * $) code> ?[A-Z] {2,3} ((? = \ D \ b) | (? = \ R) | (? = \ \.) | (? = \ B))
C'est correct.