2016-04-08 9 views
1

içinde regex'teki whitespaces ve farklı durumları yok saymanın en iyi yolu nedir? Herhangi bir boşluk ve farklı durumları göz ardı ederken, başka bir dizede belirli bir dizenin tüm oluşumlarını bulmak için düzenli bir ifade kullanıyorum. Bu çalışıyorjavascript

var word = "foobar"; 
var str = word.substring(0,1)+"\\s*"; // declares the string as "f\\s*" 
for (var i = 1; i < word.length - 1; i++) str = str + word.substring(i,i+1)+"\\s*"; // will add every character together with \\s* to 'str' like this: "f\\s*o\\s*o\\s*b\\s*a\\s*" 
str = str + word.substring(word.length - 1,word.length); // will add the last character without \\s* like this: "f\\s*o\\s*o\\s*b\\s*a\\s*r" 
var regEx = new RegExp(str, "gi"); // outputs /f\s*o\s*o\s*b\s*a\s*r/gi 

ama bunu çözmek için en iyi yol gibi hissetmez: var word = "foobar" eğer

var str = word.substring(0,1)+"\\s*"; 
for (var i = 1; i < word.length - 1; i++) str = str + word.substring(i,i+1)+"\\s*"; 
str = str + word.substring(word.length - 1,word.length); 
var regEx = new RegExp(str, "gi"); 

şöyle bir örnek verilebilir:

Aşağıda benim şimdiki kodudur. Bunun için daha güzel bir çözüm varsa minnettar olurum.

+1

Eğer bir örnek yapabilir misiniz, daha kolay anlamak için? – John

+0

Lütfen kodunuzun zor olduğunu anlamak için bize giriş ve beklenen çıktıyı gösterin –

+0

Durumu görmezden gelmek için http://stackoverflow.com/questions/24395542/regex-ignore-case adresini ziyaret edebilirsiniz. Ayrıca \ 'meta' kullanıyor gibi görünüyorsun, böylece her türlü beyaz alanla ilgileniyor. –

cevap

3

Sen split ve join bu basitleştirmek için kullanabilirsiniz:

var word = "foobar"; 
var regex = new RegExp(word.split('').join('\\s*'), 'gi'); 
//=> /f\s*o\s*o\s*b\s*a\s*r/gi 
+1

Bu tam olarak aradığım çözümdü! +1 – tjespe