2012-02-28 7 views
0

を検証する正しい文字列 "900 - 09 999" の文字列は0〜9の数字、ハイフンおよびスペースのみを許可する必要があります。RegExpで文字列 "900 - 09 999"

ありがとうございました

+4

これは、いくつかの基本的な例を読み、正規表現エディタを起動することで得ることができる基本的な正規表現のスキルです。 http://www.regular-expressions.info/およびhttp://rubular.com/ – pduersteler

+0

_確かめるべきことを私たちに伝えるときはもっと正確にしてください - 文字列に引用符が含まれていますか?ハイフンはそこにある必要がありますか?ユーザーがスペースを削除または追加するとどうなりますか?どこかのスペースの代わりにタブをコピーして貼り付けるとどうなりますか?空白は最初か最後に許されていますか?あなたはそれがかなり近いが正確ではないかのように再フォーマットされたいのですか? –

答えて

1

正規表現の検証対象を説明するときは、常に正確である必要があります。スペースとハイフンはオプションかどうか?このことは重要です。あなたは、この使用している場合

"\d{3} ?\-? ?\d{2} ?\d{3}" 
+0

Thx。クラウス!!ええ、スペースとハイフンはオプションです。 – Manu

0

inputField.value = inputField.value.replace(/\s*(\d\d\d)\s*-?\s*(\d\d)\s*(\d\d\d)\s*/, "$1 - $2 $3") 

を、それは両方の緩く検証しなければならない...

"\d{3} \- \d{2} \d{3}" 

そしてこのあまり厳密な1:とにかく、これは厳格なフォーマットを検証します完全に一致しない場合は値を再フォーマットしてください。壊れ

、式は以下のん:

\s*   # match any amount of whitespace 
(\d\d\d)  # capture three digits 
\s*   # match any amount of whitespace 
-?   # match an optional hyphen 
\s*   # match any amount of whitespace 
(\d\d)  # capture two digits 
\s*   # match any amount of whitespace 
(\d\d\d)  # capture three digits 
\s*   # match any amount of whitespace 
  • match表現
  • captureが一致するものを見つけるが、その後の一致を保存することを意味一致する文字のセットを見つけることを意味し
  • whitespaceには、スペース、タブ、またはキャリッジリターン文字を使用できます。
  • any amountはゼロまたはmor e
+0

Thx。コードジョッキー!! – Manu

関連する問題