2016-04-12 8 views
0

市町村の昏睡状態または都市空間の状態のいずれかで市街地と州を入力できるようにする必要があります。私は問題を解決しようとしています。この正規表現パターン。都市と州の正規表現のパターン

/^[A-Za-z]+(\s?)+[,\s](\s?)+[A-Za-z]{2,}$/ 

次の入力はすべてtrueを返す必要があります。しかし正規表現はそれらのいくつかに失敗します。

ニューヨーク、NY真

ニューヨークNY

シアトルWA真

シアトル、WA真

ウィンストンセーラム、ノースカロライナ州

ウィンストンセーラムNCあなたはこれらの成分を必要とする

+2

正しい。その場合、RegExは完全な解決策ではありません。正規表現は都市と州がカンマ '、'で区切られているかどうかを調べることができます。 [この正規表現はすべて一致します。](https://regex101.com/r/jQ6dK9/1)しかし、都市と州の一致がプログラミング言語の一部であるかどうかを認識するためにはそれを超えてください。 –

+1

'(\ s?)+'部分(あなたの正規表現に二度現れます)は何をすべきでしょうか? 1つ以上のオプションのスペースに一致しますか? – nnnnnn

答えて

4

に:

Word = [A-Za-z]+ 
Space = [ ] 
CityName = Word (?:Space Word)* 
StateAbbrev = [A-Za-z]{2} 
Everything = (CityName) ,? Space (StateAbbrev) 

が一緒にこれらを取ると、あなたの正規表現は次のとおりです。

/([A-Za-z]+(?: [A-Za-z]+)*),? ([A-Za-z]{2})/ 

このパターンが一致するたびに、あなたは抽出することができます市町村名と州をキャプチャグループ1と2として表示します。

+0

ありがとう – user996502

関連する問題