Javascript bölünmüş normal ifade sorusu


116

merhaba Javascript'te oldukça kolay bir normal ifade olacağını düşündüğüm şeyi deniyorum ama bana çok fazla sorun çıkarıyor. Javascript aracılığıyla bir tarihi '-', '.', '/' Ve '' ile bölmek istiyorum.

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

Bunun için doğru normal ifade nedir ve her türlü yardım harika olur.

Yanıtlar:


174

Bölmek istediğiniz karakterleri , normal ifade motoruna "bu karakterlerden herhangi birinin eşleştiğini" söyleyen bir karakter sınıfına koymanız gerekir . Amaçlarınız için bu şöyle görünecektir:

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

Kesik çizgiler, karakter sınıflarında bir aralık belirticisi olarak özel bir anlama sahip olsa da (yani [a-z]aynı anlama gelir [abcdefghijklmnopqrstuvwxyz]), eğer onu sınıfın son parçası olarak koyarsanız, bir düz çizgi anlamına gelir ve kaçılmasına gerek yoktur.

Kalıbınızın neden işe yaramadığını açıklamak için /-./, normal ifade motoruna bir düz çizgi karakteri ve ardından herhangi bir karakterle eşleşmesini söyler ( noktalar , normal ifadelerdeki joker karakterlerdir). "02-25-2010" ile, her "-2" ile karşılaşıldığında bölünür, çünkü kısa çizgi eşleşir ve nokta "2" ile eşleşir.


3
Ayrıca, bir noktanın bir karakter sınıfının içinde özel bir anlamı olmadığından da bahsedebilirsiniz - bir joker karakter olarak davranmak yerine (ki bu hiçbir anlam ifade etmez), gerçek gibi davranır.
Bobby Jack

11

veya sadece (sayılar dışında her şey):

date.split(/\D/);

6

sadece kullanabilirsin

date.split(/-/);

veya

date.split('-');

1
Kodunuzun önüne bir satır sonu koyun ve 4 boşluk onu doğru şekilde biçimlendirecektir.
Brandon

5

Sonra onu sayılar dışında herhangi bir şeye bölün:

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

3

Dizinizin şöyle olduğunu söyleyin:

let str = `word1
word2;word3,word4,word5;word7
word8,word9;word10`;

Dizeyi aşağıdaki sınırlayıcılarla bölmek istiyorsunuz:

  • Kolon
  • Noktalı virgül
  • Yeni hat

Dizeyi şu şekilde bölebilirsiniz:

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

Son olarak, dizideki öğeleri kırpmanız gerekebilir:

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


-1

bunun yerine bunu dene

date.split (/ \ K + /)


Bunun neden daha önce yayınlanan 5+ yanıttan daha iyi bir cevap olduğunu açıklayabilir misiniz? Ve gerçekte nasıl çalışıyor?
mjuarez

Bu aslında benim için tüm cevaplar arasında en iyisi oldu.
reectrix
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.