2016-03-30 10 views
-6

-ANSWER 'var pattern =/(\\ n) | (\\ r) | (\\ t)/g;'Bir dizede JS replace() yönteminde 3 regex desenini nasıl birleştiririm? Bu örnek için

-ANSWER, sorguyu her parantez içine, bir boru sembolü ile ayırabilir ve regex'in sonuna global tanımlayıcı atayabilirsiniz.

TA DA! :)

YTL A YARARLI REGEX ARACI İÇİN BU LİNK: https://regex101.com/#javascript

ben bunu nasıl gibi basit sorular regexes basit bir cevap alacağı birleştirmek düşündüm - i öğretici bir tek doğru yanıt var inanmıyorum. Ama kılavuzu okumanızı tavsiye ederim.

Pek çok önerilen yanıtı okudum, çoğu boru OR operatörüne odaklanmış gibi görünüyor, ancak normal ifadeleri birleştirmek istiyorum. Regexes utanç verici newbie. Her neyse, özel karakterleri sekme, boşluk ve dönüşten kaldırmak istiyorum. İşte ne var: Bu işler

  var pattern1 = /(\\n)/g; 
      var pattern2 = /(\\t)/g; 
      var pattern3 = /(\\r)/g; 

      $heading = $heading.replace(pattern1, ""); 
      $heading = $heading.replace(pattern2, ""); 
      $heading = $heading.replace(pattern3, ""); 

, ancak tekrar ediyor ve tüm bakmak ve bunları kaldıracaktır bir düzenli ifade deseni oluşturmak için nasıl herhangi bir bilgi bulamıyorum.

+1

@sjingo Lütfen * literal * '\ n's, vs. veya * actual * newlines, vb. Değiştirmek isteyip istemediğinizi belirtin – Biffen

+0

OP, lütfen sorunuzu açıklığa kavuşturun. "Tüm özel karakterleri kaldırmak istiyorum" şu anki regex'in yaptığı şey değil. Lütfen [düzenle] ve sorunun ne olduğunu açıklığa kavuşturun. –

+0

Merhaba, tüm yorumlarınız için teşekkür ederim. Kendim için öğrenmekten zevk alırım ancak bu yüzden bir gönderi için bir son teslim tarihindeyim. – sjingo

cevap

1

Mantıksal OR'leri kullanarak bunları birleştirebilirsiniz.

Wiktor Stribiżew yaklaşımı kullanarak
var pattern = /(\\t|\\n|\\r)/g; 
$heading = $heading.replace(pattern1, ""); 

, ama özel karakter kaçtı için üç karakterlerden herhangi ardından ters eğik çizgi maç için /\\[trn]/g kullanabilirsiniz.

+1

\\ iki karakter olarak sayılır. – user6134246

+0

tamam bir tanesi de sınıfları olan özel karakterli karakterler için yapabilir (artı OR kullanmadan bir çözüm sordu). – user6134246

+0

Doğru cevap burada. – sjingo

0

Modelleri mantıksal bir OR ile ayırmak için | çubuğunu kullanın. senin Mesela ben de hangi ifadenin ifadesini almak için pattern.source kullanabilirsiniz desen

var pattern = /\r|\t|\n/g; 

kullanmak. Böylece onları daha sonraki bir aşamada birleştirebilirsiniz. Şunun gibi:

var pattern1 = /\r/; 
var pattern2 = /\t/; 
var combined = new RegExp(pattern1.source + '|' + pattern2.source); 
combined.source 
=> '\\r|\\t' 

Bu model test dizede herhangi satırbaşı, sekme veya satır başı karakteri ile eşleşir. See here for a working example. Ayrıca, https://regex101.com/#javascript numaralı telefonu da inceleyin. Bu regeeksleri bulmak için harika bir araçtır.

+0

hey Larslonne. teşekkürler cevabınız en yardımcı oldu. – sjingo

İlgili konular