web-dev-qa-db-fra.com

Javascript split regex question

bonjour j'essaye ce que je pensais être une regex assez facile en Javascript mais me donne beaucoup de peine. Je veux pouvoir scinder une date via javascript en scindant soit par '-', '.', '/' Et ''.

var date = "02-25-2010";
var myregexp2 = new RegExp("-."); 
dateArray = date.split(myregexp2);

Quelle est la regex correcte pour cela toute aide serait formidable. 

86
Craig

Vous devez insérer les caractères que vous souhaitez séparer dans une classe de caractères , qui indique au moteur des expressions rationnelles "n'importe lequel de ces caractères est une correspondance". Pour vos besoins, cela ressemblerait à:

date.split(/[.,\/ -]/)

Bien que les tirets aient une signification particulière dans les classes de caractères en tant que spécificateur d'intervalle (c.-à-d. [a-z] signifie le même que [abcdefghijklmnopqrstuvwxyz]), si vous le définissez comme la dernière chose de la classe, il est supposé signifier un tiret littéral et ne nécessite pas d'être échappé.

Pour expliquer pourquoi votre modèle n'a pas fonctionné, /-./ indique au moteur des expressions régulières de faire correspondre un tiret littéral suivi de tout caractère ( dots sont des caractères génériques dans les expressions régulières). Avec "02-25-2010", il se scinde à chaque fois que "-2" est rencontré, car le tiret correspond et le point correspond à "2".

134
Daniel Vandersluis

ou juste (autre chose que des chiffres):

date.split(/\D/);
7
Jo3y

vous pouvez simplement utiliser 

date.split(/-/);

ou

date.split('-');
6
Allan Ruin

Puis divisez-le sur autre chose que des chiffres:

date.split(/[^0-9]/);
4
useless

Dites que votre chaîne est:

let str = `Word1
Word2;Word3,Word4,Word5;Word7
Word8,Word9;Word10`;

Vous voulez diviser la chaîne par les délimiteurs suivants:

  • Côlon
  • Point-virgule
  • Nouvelle ligne

Vous pouvez diviser la chaîne comme ceci:

let rawElements = str.split(new RegExp('[,;\n]', 'g'));

Enfin, vous devrez peut-être rogner les éléments du tableau:

let elements = rawElements.map(element => element.trim());
0
Bobzius

ou tout simplement utiliser pour les chaînes de date 2015-05-20 ou 2015.05.20

date.split(/\.|-/);
0