2017-10-02 9 views
-1

PHPの正規表現関数(ステートメント)にオプションの文字を入れる方法を見つけようとしています。私は、数値データ、スペース、大文字の通り名、通り、大通り、道など、そしてNSWEの任意の文字からなる非常に単純なアドレスを入力しようとしています。ここで私がこれまで持っているものだ...PHP正規表現のオプション文字

は、これまでどのような作品と何ない...

133タイムズ道(動作しない)

133タイムズRoad_(アンダースコアが実際にあります空間これは動作)

133タイムズ道A(作品、しかしならない)

133タイムズロードN大幅理解

提案。

d+\s[A-z]+\s[A-z]+(\s+[NSWE])*? 
+0

https://regex101.com/r/tKuM77/1を参照してください。 –

+0

これは、ヒンズー語 - アラビア数字のように、0-9以外の文字と一致します。あなたが実際に正規表現がしたいものをより具体的にする。質問を書き換えてください。 – PHPglue

+0

'[A-z]'を使ってすべての文字をマッチさせるのは、悪い考えです。大括弧、バックスラッシュ、ニンジン、アンダースコア、バッククイックもこの範囲に含まれています。 – CAustin

答えて

1

私はこのようなものだろう:私は、間に改行やタブが許可されていないスペースで\sを置き換え

\d+ [A-Z][a-z]+ [A-Z][a-z]+([NSWE])? 

を。あなたがそのようにそれをしたくない場合は、私は2つの理由から[A-Z][a-z]+[A-z]+を変更

\d+\s[A-Z][a-z]+\s[A-Z][a-z]+(\s[NSWE])? 

に滞在することができます:あなただけもう今は動作しません、アンダースコアのような1つの大文字とキーを使用することができます。
私はあなたを誤解して、あなたが好きな[NSWE]のように多くの文字を追加したい場合は、この使用することができますあなたがアクションでそれを見ることができます。ここ

\d+ [A-Z][a-z]+ [A-Z][a-z]+([NSWE]+)? 

Here you can see it in action

を。

私はあなたがこの壊れた正規表現を発明したかどうかわからない場合、私はあなたにそれを行う方法を教えた人でした。

+0

ありがとうございました。私がしなければならないことに対して完全に働きます。 –

+0

@ The Roferこれがうまくいくならば、答えを受け入れるべきです。 https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – chris85

+0

はい、動作します。私にこのことを思い出させてくれてありがとう。 –

関連する問題