2010-08-24 4 views
71

bonjour J'essaie ce que je pensais être une regex plutôt facile en Javascript mais qui me donne beaucoup d'ennuis. Je veux la possibilité de diviser une date par fractionnement javascript soit par '-', '.', '/' Et ''.Javascript split regex question

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

Quelle est la regex correcte pour ce tout et toute l'aide serait géniale.

Répondre

114

Vous avez besoin de mettre les caractères que vous souhaitez diviser dans un character class, qui indique au moteur d'expressions régulières "l'un de ces caractères est une correspondance". Pour vos fins, cela ressemblerait à ceci:

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

Bien que les tirets ont une signification particulière dans les classes de caractères en tant que prescripteur de gamme (c.-à-[a-z] le même sens que [abcdefghijklmnopqrstuvwxyz]), si vous le mettez comme la dernière chose dans la classe, il est pris pour signifier un tiret littéral et n'a pas besoin d'être échappé. Pour expliquer pourquoi votre motif n'a pas fonctionné, /-./ indique au moteur d'expressions régulières de correspondre à un caractère tiret littéral suivi de n'importe quel caractère (dots sont des caractères génériques dans les expressions régulières). Avec "02-25-2010", il se séparerait à chaque fois que "-2" est rencontré, car le tiret correspond et le point "2".

+3

Vous pouvez également mentionner qu'un point * ne * ont une signification spéciale à l'intérieur d'une classe de caractères - au lieu d'agir comme un caractère générique (qui n'aurait aucun sens), il agit comme un littéral. –

4

vous pouvez simplement utiliser

date.split(/-/); 

ou

date.split('-'); 
+1

Mettez un saut de ligne avant votre code et les 4 espaces le formateront correctement. – Brandon

4

ensuite Fractionner sur quoi que ce soit mais les chiffres:

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

ou tout simplement (tout sauf les numéros):

date.split(/\D/); 
0

ou simplement utiliser des chaînes de date 20/05/2015 ou 2015.05.20

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