2017-09-24 12 views
1

で5桁側の文字列のみを正規表現:JavaScript;私はこのコードを持っている側

<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <script> 
 
      window.onload = function() { 
 
       var src = document.getElementById("one"), 
 
        dst = document.getElementById("two"); 
 
       src.addEventListener('input', function() { 
 
        dst.value = src.value.replace(/\D/g,''); 
 
       }); 
 
      }; 
 
     </script> 
 
    </head> 
 
    <body> 
 
    
 
     <input type="text" id="one" name="one"> 
 
     <input type="text" id="two" name="two"> 
 
    
 
    </body> 
 
</html>

これはoneからの数字ではないすべてのものを削除し、twoに挿入します。

しかし、私は5桁の文字列を並べて保持したいと思います。

手段、oneがある場合:

test 1 test 1234 test。出力なし

test 1 12345 test;出力12345

test 123456 test 12 test;出力なし

;出力12394

84725;出力84725

REGEXを変更する方法を知っている人はいますか?

+0

こんにちはデビッド、私はあなたの古い質問を削除し、これを転載信じています。アドレス欄からzip /郵便番号を解析しようとしています。あなたの提案がうまくいくかもしれませんが、ここにいくつかの警告があります:1. 5桁のハウスナンバー(つまり、 '12345 Some street'); 2.郵便番号は国によって異なる(つまりカナダでは「A0A 0A0」) – ctwheels

+0

アドレスコードを正しく整理できるように、アドレスとデータベースに関するこの質問を実際に見てください。https://stackoverflow.com/質問/ 310540 /ベストプラクティス - 保存 - 郵便アドレス - データベース - データベースのRDBMS **あなたが米国のみにすることにした場合、そして郵便番号を解析するために正規表現を使用する場合、 **保証** – ctwheels

+0

私は既に行っています。私はアドレスとジップのmaデータベースに異なる列を持っています。このコードは "データベースに挿入"フォーム用です。通常は、zipテキストフィールドに手動でzipをコピーします。今私は仕事が少なくなるでしょう。私が何を意味するのか理解していますか? – David

答えて

2

\dを使用して数字を一致させ、選択した長さを{5}に指定することができます。次に、単語の境界(\bは)あなたに隣接する他の数字が一致していないがあることを確認してください:

/\b\d{5}\b/g

+0

これは '\ b \ d {5} \ b'に短縮することができます。セットには1つの値しか含まれていないので、' [] 'は必要ありません – ctwheels

+1

それを指摘してくれてありがとう。 –

0

をあなたの特定のユースケースでは、あなたがキャプチャグループに必要な値をキャプチャするために\b(\d{5})\b/gを使用することができます。そうしないと、一致した値にスペースが入ります。

+0

数字の横にスペースがある場合とない場合があるため、これは正しくありません。正しい答えは '\ s'の代わりに' \ b'を使用することです。これは文字列の先頭または末尾にあるので(前後には何もない)、コンマまたはその他の単語以外の文字それだけでなく。 – ctwheels

+0

それを指摘してくれてありがとう@ctwheels。修正されました。 – nilobarp

0

ソリューション:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<script> 
 
\t window.onload = function() { 
 
\t \t var src = document.getElementById("one"), 
 
\t \t dst = document.getElementById("two"); 
 
\t \t src.addEventListener('input', function() { 
 
\t \t \t dst.value = src.value.match(/\b\d{5}\b/g); 
 
}); 
 
}; 
 
</script> 
 
</head> 
 
<body> 
 

 
<input type="text" id="one" name="one"> 
 
<input type="text" id="two" name="two"> 
 

 
</body> 
 
</html>

+0

@ jeffrey-westerkamp答えを受け入れる方が良いです。彼の正規表現に基づいた答えですから。 – Firanolfind

関連する問題