0

電話番号のテキスト ボックスがあります。検証する必要があります。要件は次のとおりです。

  1. 10桁以上の数字のみを取る
  2. (、)、-、

誰でもこれを助けることができます.私は試しました

^[\d{10,14} +\s +\( +\)-]+$

しかし、機能していません。

4

2 に答える 2

2

そのような表現を構築するのに役立つ次の記事をご覧ください。

于 2012-04-19T06:54:04.637 に答える
1

正規表現の何が問題なのか(なぜ期待どおりに機能しないのか)は述べていませんが、問題は、必要以上に一致することだと思います。つまり、セット内のすべての文字の 1 つ以上に一致します (10 から 14 の間だけではなく)。

私はあなたが間違っていると思うのは、キャラクターセットに入れすぎたことです。そこに+記号が 3 回あり、セット内から量指定子も使用しようとしているように見えますが、これは許可されていません。文字セットは、1 文字の代替に相当します。したがって、[abc]は に相当しa|b|cます。

次の文字の任意の数 (ゼロ以上) を許可しながら、入力を 10 から 14 の数字にすることを想定しています。

+()-,

他の人が示唆しているように、必要な文字をセットに入れてから、次のように量指定子を指定するだけです^[0-9()-,+]{10,14}$。これでほとんどたどり着きます。唯一の問題は、これらの文字のいずれかを 10 から 14 の間で許可するため、これにうまく一致することです。

,,,,,++()---

明らかにあなたが望んでいないのはどれですか(そうですか?)

したがって、この問題をより適切に解決するには、何が許可され、サブジェクトのどこで許可されるかをより具体的にする必要があります。あなたが何を合わせたいのか正確にわからないので、これ以上あなたを連れて行くことはできません.

私がここで提供した情報が、あなたが始めるのに十分なものであることを願っています。さらに質問がある場合は...まあ、それが私たち全員がここにいることですので、質問してください.

学習に役立ついくつかのリソースを以下に示します (これは利用可能なリソースの小さなサブセットですので、自分で検索してください)。

テストツール

お役立ち情報

于 2012-04-19T16:50:49.730 に答える