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.