Comment diviser la chaîne ci-dessous
var test = 'sample "test""test2" "test3\\"" sample2"last';
dans un tableau en ['sample','"test"','"test2"','"test3\\""','sample2"last']
utilisant javascript regx ?
Quelques exemples d'entrées et de sorties attendues sont ajoutés ci-dessous.
sample1 : ' test1 "test2" test3 "test four\\"" test" d'
output [' test1','"test2"','test3','"test four\\""','test" d']
sample2 : ' test1 test2'
output [' test1 test2']
sample3 : ' test1 "sub test2'
output [' test1 "sub test2']
sample4 : ' test1 "sub test2"'
output [' test1 ','"sub test2"']
sample5 : ' "test1" "sub test2" here'
output ['"test1"','"sub test2"', 'here']
Cette regex devrait fonctionner pour vous pour le fractionnement :
/\s*"[^"\\]*(?:\\.[^"\\]*)*"\s*|.+?(?="[^"\\]*(?:\\.[^"\\]*)*"|$)/g
Code:
var input = [` test1 "test2" test3 "test four\\"" test" d`, ` test1 test2`, ` test1 "sub test2`, `' test1 "sub test2"`, ` "test1" "sub test2" here`];
const re = /\s*"[^"\\]*(?:\\.[^"\\]*)*"\s*|.+?(?="[^"\\]*(?:\\.[^"\\]*)*"|$)/g;
input.forEach(el => {
console.log('<<', el, '>>');
var arr = el.match(re);
arr.forEach(i => console.log(i));
});
Détails RegEx :
"[^"\\]*(?:\\.[^"\\]*)*"
: correspond à une chaîne entre guillemets en ignorant les guillemets échappés|
: OU ALORS.+?(?="[^"\\]*(?:\\.[^"\\]*)*"|$)
: Correspond à 1+ tous les caractères qui doivent être suivis d'une chaîne entre guillemets ou d'une fin de ligne.Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots