0

私はJSと一致する必要があります:

  • 数、
  • 1 文字 (または 2 文字) が続く可能性があります。
  • スペースで区切ることができます
  • またはハイフン

例えば:

23 
4545a 
1B 
554 cs
34-S

正規表現は私の得意分野ではないので、私が持っているのはこれだけです...

^[0-9A-Za-z ]+$

更新しました:

^(0-9A-Za-z )+$
4

4 に答える 4

2

Aaaaand、私のものは他の答えのハイブリッドです。:)

/^\d+[ -]?[a-z]{0,2}$/i
  • \d+= 1桁以上
  • [ -]?= オプションのスペース文字 (注: 「空白」ではなく、スペースのみ) またはダッシュ
  • [a-z]{0,2}= 1 つまたは 2 つの英字 (注: 現時点では小文字のみですが、読み続けてください . . .)
  • パターンのi最後の は大文字と小文字を区別しないため、[a-z]は大文字または小文字のアルファベットと一致します。

編集- わかりました。すべての回答にエラーが見つかりました。LOL アルファ パターンでは最後に 0 文字が許可され、スペースとダッシュはオプションであるため、これまでに提供した正規表現は、次のテスト データに対して誤検知をもたらします123-456 <--- with a space at the end

2 番目の値は on を使用して解決でき$.trim()ます (テストしようとしているものが許可されている場合) が、最初の値はできません。

そう 。. . これにより、これらの状況を処理するための新しい正規表現が得られます。

/^\d+([ -]?[a-z]{1,2})?$/i
  • \d+= 1桁以上
  • [ -]?= オプションのスペース文字 (注: 「空白」ではなく、スペースのみ) またはダッシュ
  • [a-z]{1,2}= 1 つまたは 2 つの英字を使用する必要があります (注: 現時点では小文字のみですが、読み続けてください . . .)
  • これらの最後の 2 つのパターンの前後では、スペースまたはダッシュ( . . . )?が数字の後にのみ有効であることが強制されます。. . ただし、そのグループ全体はオプションです。
  • パターンのi最後の は大文字と小文字を区別しないため、[a-z]は大文字または小文字のアルファベットと一致します。

彼らは更新された正規表現がすべての例に一致し、私が言及した 2 つの無効なケースでも失敗しました。

注:数字の後にスペースが続くものを有効と見なす必要がある場合は、テストする前に値をトリミングすることで、そのケースもパスできるようになります。

于 2013-08-15T15:51:57.187 に答える
1

次のようにしますか?

^[0-9]+( |-)?[A-Za-z]{0,2}$

于 2013-08-15T15:41:33.160 に答える