2017-06-05 1 views
0

Comment puis-je fractionner la chaîne [email protected]@@[email protected]@@someval3 pour obtenir le tableau de résultats en tant que
['somekey', '@', 'someval', '@@', 'somekey2', '@@@', 'someval3']?JavaScript RegExp diviser séparateurs de maintien

+0

Quelle partie vous coincé sur? Comment faire correspondre un ou plusieurs caractères @, ou comment les faire apparaître dans le tableau de sortie? [MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split) a un exemple de ce dernier. – nnnnnn

+0

lorsque vous divisez des choses, vous perdrez le délimiteur –

+0

@ A.Lau - Seulement si vous voulez. '.split()' peut le faire de toute façon. – nnnnnn

Répondre

1

Vous pouvez essayer l'extrait suivant, il vous permet de diviser et de capturer n'importe quel jeton

var str = '[email protected]@@[email protected]@@so>>meval3!!split&&me%hello#world'; 
 
var result = str.split(/([^\w]+)/); 
 
console.log(result);

1

Cela devrait fonctionner:

var myString = '[email protected]@@[email protected]@@someval3'; 
var splits = myString.split(/\b/); 

\b signifie limite de mot ici.

+0

non, j'ai besoin modèle concret. La chaîne peut contenir '>>' ou '>' ou '@@' ou des espaces et je veux que chaque entité se scinde à sa place dans le tableau – Herrgott

+1

Si vous voulez séparer et/ou capturer '>>' ou '>' , alors s'il vous plaît ajouter cette information à votre question, ainsi que des informations sur la façon dont vous voulez gérer les espaces. –

0

Solution trouvée. Pour diviser @@ et @ comme séparateurs différents dont vous avez besoin /(@@|@)/g

+0

Ou vous pourriez juste utiliser '/ (@ +) /' comme suggéré initialement dans un commentaire. – nnnnnn

0

Vous pouvez utiliser String.prototype.match() avec RegExp/\w+|[^\w]+/g pour correspondre à un ou plusieurs caractères de mots ou un ou plusieurs caractères qui ne sont pas des caractères mot

var str = "[email protected]<<[email protected]@@someval3  somekey4####someval5"; 
 
var res = str.match(/\w+|[^\w]+/g); 
 
console.log(res);