2

入力のパターンが次のような入力シナリオがあります。

var location = /^[a-z]+\s*[a-z]*,\s*[a-z]+\s*([^,]?[a-z]+)*$/i;

私の入力は、次の許可されたタイプです。

  • カリフォルニア州ロサンゼルス
  • Los Angeles, CA (文字列テキスト間にスペースがあります)
  • 米国カリフォルニア州ロサンゼルス
  • Los Angeles, CA,USA (文字列テキスト間にスペースがあります)
  • Los Angeles, CA, USA (文字列テキストの間と、場合によっては終了テキストの後にスペースがあります)

次の入力タイプ ( extra を持つものはテストに合格していません:

  • 米国カリフォルニア州ロサンゼルス
  • Los Angeles, CA,USA (文字列テキスト間にスペースがあります)
  • Los Angeles, CA, USA (文字列テキストの間と、場合によっては終了テキストの後にスペースがあります)

ここで私が間違っていることを誰かに教えてもらえますか? どんな助けでも大歓迎です!ありがとう!

はい、正規表現と js は初めてです。

テストに使用した完全なコード:

if (str.match(locationstring)){             
console.log("Match pattern str!");          
type = 2;       
}else{          
alert("No match str!");             
return;         
}
4

2 に答える 2

1

あなたの正規表現は、正規表現のコンマがある正確な位置の , にのみ一致できます。したがって、複数の ;) を含む文字列と一致しないことは明らかです ;)

この正規表現は、すべてのテスト ケースに一致します (そして、あなたのものとは対照的に、名前にスペースが含まれていない都市に一致します。それらは存在しますね ^^):

/^\w+(\s*\w+)?\s*,\s*\w+\s*(,\s*\w+)?$/i?

(ホイストスペースを含む国や州とはまだ一致しません。必要な場合は教えてください。

于 2013-11-13T21:19:12.817 に答える