2012-07-04 32 views
24

Tüm rakamları değiştirmem gerekiyor.JS regex: tüm basamakları dize ile değiştir

Benim işlevim yalnızca ilk basamağın yerini alır.

var s = "04.07.2012"; 
alert(s.replace(new RegExp("[0-9]"), "X")); // returns "X4.07.2012" 
              // should be XX.XX.XXXX" 
+0

Sana küresel seçeneği değiştirmek gerek. Ve '[0-9]' 'd' basitleştirilebilir. – nhahtdh

cevap

49

:

s.replace(new RegExp("[0-9]", "g"), "X") 

ya, belki daha güzel kullanılarak yerleşik değişmezi regexp sözdizimi:

.replace(/[0-9]/g, "X") 
+1

Bunları nasıl yerine X 'yerine unicode karakteriyle değiştirirdim? Örneğin '\ U2022'? – Cmag

+1

yanıt: 'değiştir (/ [0-9]/g, '\ u2022');' – Cmag

7

tüm oluşumları yerini alacak

s.replace(/\d/g, "X") 

kullanın

. g, küresel eşleşmesi ile eşleşir ve bu nedenle ilk oluşumdan sonra eşleşmeyi durdurmaz.

Veya RegExp yapıcı kalmaya: Eğer regex için "küresel" bayrağını eklemem gerekiyor

s.replace(new RegExp("\\d", "g"), "X") 
2

o daha kısa[0-9]olduğu gibi /gdeğiştirici,

Sen basamağı için\dkullanabilirsiniz küresel bir maç yapın (daha doğrusu ilk sonra durdurma daha tüm eşleşmeleri bulmak) için kullanılır.

JavaScript:

var s = "04.07.2012"; 
echo(s.replace(/\d/g, "X")); 

Çıktı:

XX.XX.XXXX 
2

belirtilen dizeleri ile değiştirilir sonra sayılar ve bulun.

<script type="text/javascript"> 

var string = "my contact number is 9545554545. my age is 27."; 
alert(string.replace(/\d+/g, "XXX")); 

</script> 

*: Bu iki yöntem

  1. değişmez normal ifade kullanma anahtar kelime RegExp nesne

kullanma

  • değişmez normal ifade kullanma sağlanır * Çıktı: ** iletişim numaram X XX. benim yaşım XXX. Daha fazla ayrıntı için

    :

    http://www.infinetsoft.com/Post/How-to-replace-number-with-string-in-JavaScript/1156