0

入力ボックスを検証するために正規表現を作成する必要があります。#数字をX表し、文字を表します。形式は次のとおりです。

11111 - XXXXXXX

また

11111 - XXXXXXX-XXXXXXXX XXXX

入力ボックスには、データベースから取得するオートコンプリートがあり、ID の後に組織名が続くリストを返します。

そのような:

  • 1234 - Benjamin Franklin ISD
  • 1234134 - Benjamin Franklin ISD - Humanities District
  • 123434 - Benjamin-Franklin ISD
  • 1234441 - Benjamin Franklin ISD Accelerated

基本的に、最初の数字より前の数字は ID で、その後の数字は内部に-存在する可能性のある組織の名前です。-

両方の可能なエントリを許可できるようにするにはどうすればよいですか?

正規表現やリソースについて、どんな助けでも大歓迎です!

4

2 に答える 2

1

2 つのソリューション:

  1. .test最初のものは、 true または false を返すために使用するように設計されています。

    var orgIdCheck = /\d+\s*-\s*[-\w\s]+\w/;
    var validId = orgIdCheck.test(*possible org ID string*);
    if (validId) {} /* do something */
    else {} /* do something else */
    
  2. 2 つ目は、数値 ID と組織名を含む 2 要素の配列を返すように設計されています。

    var orgIdComponents = /(\d+)|(\w[-\w\s]*\w)/g;
    var idParts = *validated org ID string*.match(orgIdComponents);
    /* idParts[0] will be the numeric ID, and idParts[1] the name */
    

2 番目の正規表現では、文字列に数値 ID と名前の両方が含まれているかどうかがチェックされないことに注意してください。そのため、2 番目の正規表現を使用する前に、最初の正規表現を使用して検証する必要があります。(組織 ID 文字列を事前に検証しないと、2 番目のものは奇妙なものを返す可能性があります。)

悪い入力に対する偏執狂度に応じて、キャレット ^ とドル記号 $ を式の前後 ( and 内) に置くことができorgIdCheckます。ただし、余分なスペースが原因で、一部の有効な入力に対して false になる場合があります。//

于 2013-06-07T22:09:33.353 に答える