2017-12-10 19 views
0
R.replace(/[0-9](?!([0-9]{4}))/g,'*','123456789'); 
yields 12345**** 

want to input 123-45-6789 and yield 123-45-**** 

Currently based on above it yields ***-**-**** 

理由がわかりません。私はシミュレートするためにrambda jsを使用しています。 http://ramdajs.com/docs/#replace最後の4つの正規表現マスク

は正規表現を構築するのに役立つ必要があります。任意のヘルプが評価されます

+4

正規表現はパターンを検出しますが、何も変更されません。あなたはプログラムでそれをしなければなりません。 – Juan

+1

正規表現は最後に見つかった4つの数字を置き換えます - もしあなたが1234-123-123456のようなものにそれを適用すれば1234と123と1233456と一致し、すべてが最後の4つの数字を置き換えます。 –

+0

こんにちはJuanとPatrickは、私はこのパターンを検出するために正規表現に何を入力すべきか理解しています。基本的に私が達成したいのは、123-45-6789 = 123-45 - ****、123-45-67890 = 123-45-6 **** – raaone7

答えて

1

あなたの現在の正規表現は、すぐ後ろに4桁の数字がない任意の数字と一致します。これは、文字列123-45-6789のすべての数字の場合です。

作業している文字列の最後の4文字が常に数字であれば、正規表現なしで簡単にこれを行うことができます。

しかし、単純な正規表現が必要な場合は、次の正規表現で検索して****と置き換えることができます。

文字列が4桁で終わらない場合、この正規表現は何も一致しません。したがって、以下の例の最初の3つに一致し、最後の3つは失敗します。

12-345-6789 
123-45-6789 
123456789 
1-2-3-4-5-6-7-8-9 
12-34-56-78-9 
123-456-789 

あなたがこれを使用することができ、すべての6例で動作する正規表現したい場合:?

\d(?=(?:\D*\d){0,3} *$) 
0

R.replace(/ \ dは(=(?:\ D * \ D) {0,3} $/g、 ''、'123-45-6789 ');完璧に働いた。ありがとう。フランシスに賞賛!

関連する問題