私は正規表現(PHP)の助けが必要です。だから私はユーザーが注文を入力できるテキストエリアのボックスを持っています。Regex help(php)
例えば:各順序は、順序はどちらかである(最後の1
- :私は、次のルールに一致する正規表現を必要とする
see north, see south, sell 7 wood, see west
北を見る、南を見る、西を見る、東を見る)または(木材を買う/売る)。 % - を表す数(最大値は999で、最小値はありませんヘッドゼロと1である)
これまでのところ、私はこの正規表現作られています
preg_match("/(((see) (north|south|west|east))|((sell|buy) ([1-9][0-9]{0,2}) (wood)))/");
をしかし、問題は、以下の入力も有効であり、 、これはありませんする必要があります: は75木材は北参照売る
NB(それはどちらかが OR は北参照75木材を販売する必要があります)!私はPHP関数を使ってコンマで分割し、その結果の配列項目を正規表現に渡すので、私は正規表現にコンマの検証をしていません。しかし、それは次の入力で動作していないよう:だから
see north,
see south *(no comma between two orders)*
sell 7 wood,
see west
、私は次のソリューションのいずれかが必要:
- 正規表現(ルールを参照)
- 私が爆発コンマ検証を持っています入力された文字列はPHPの関数を破棄し、次の入力が無効であることを制限します:north 75 see wood north
ありがとうございました。
あなたの#2 - あなたの#2 - 使用する[アンカー](http://www.regular-expressions.info/anchors.html)のように '^(?: see(?:北、南、西、東)|(?:sell | buy)[1-9] [0-9] {0,2} wood)$ ' –
あなたのパターンは、テストストリング - そのため、南に7木材を売ってください "と答えた方が良い結果を得ました。 – CBroe
ありがとうございました。しかし、私はいくつかのユニットテストを書いて、それが何をすべきかを確かめる必要があります。そして、もちろん、私は正規表現を詳しく見ていきます。あなたの答えをありがとう! – Omaja7