Je ne suis pas très bon en regex et j'ai besoin d'une regex pour valider la virgule au début et à la fin de la chaîne. Je suis en train de convertir une chaîne en tableau.
La chaîne valide sera comme ceci,
/(?:,[A-Za-z]+)|(?:[A-Za-z],)/
Elle ne devrait pas autoriser les cas suivants et retourner false,
var data = ,test,test1 var data = test,test1, var data = test,,test2,,test,
J'ai essayé l'expression régulière ci-dessous, mais cela ne fonctionne pas,
var data = test,test1,123,H345TG;
Toute aide serait très appréciée.
4 Réponses :
console.log(
`var data = test,test1,123,H345TG;
var data = ,test,test1
var data = test,test1,
var data = test,,test2,,test,`
.split("\n")
.map(s => !!s.match(/^var\s+data\s*=\s*(?!,)(?!.*,;?$)(?!.*,,)[\w,]+;?$/))
)
Vous pouvez essayer ce modèle:
var pattern = /^\w+(,\w+)*$/;
console.log(pattern.test('test'));
console.log(pattern.test('test,test1,123,H345TG'));
console.log(pattern.test(',test,test1'));
console.log(pattern.test('test,test1,'));
console.log(pattern.test('test,,test2,,test,')); Explication: S'il y a un caractère , , il doit être suivi d'un ou plusieurs caractères alphabétiques ou numériques.
^\w+(,\w+)*$
Cela fera l'affaire:
/^[^, Often .*[^, $/
Exemple: https://regex101.com/r/gCvO0r/1 p>
Le modèle que vous avez essayé (?:, [A-Za-z] +) | (?: [A-Za-z],) correspond à une virgule et 1+ caractères az ou l'inverse et vous obtiendrez des correspondances partielles.
Vous ne correspondez pas aux chiffres, et si vous voulez valider la chaîne entière, vous pouvez utiliser des ancres pour affirmer le début ^ et la fin $ de la chaîne.
S'il doit y avoir une virgule, répétez le groupe non capturant une ou plusieurs fois en utilisant + , sinon utilisez * si seuls les caractères az et les chiffres sont également corrects.
const regex = /^[A-Za-z0-9]+(?:,[A-Za-z0-9]+)*$/;
[
"test,test1,123,H345TG",
"test",
",test,test1",
"test,test1,",
"test,,test2,,test,"
].forEach(s => console.log(`${s}: ${regex.test(s)}`));
^[A-Za-z0-9]+(?:,[A-Za-z0-9]+)*$
Merci pour votre réponse. Mais aussi il devrait réussir, si var data = test;
@Deepak J'ai mis à jour la réponse.
Une virgule doit-elle être présente?
Une alternative à la validation de la chaîne avec regex: rendez-la valide à la place: codepen.io/3rror404/ pen / OJyyOVX? editors = 1111