0

CakePHPのルートに単純な正規表現の要件があり、問題が発生しています。

ルーティングコード:

Router::connect('/tees/:id', array('controller' => 'tees', 'action' => 'view'), array('id' => "^.*[0-9].*[-][a-z].*$"));

regex: "^.*[0-9].*[-][a-z].*$"

一致したケース:340764-test-tee失敗したケース:テスト失敗したケース:anysingleword

私が間違っていることについて何か考えはありますか?

ありがとうございました!

編集:

私が使用することになった解決策は次のとおりです。

".*[0-9].*[a-z-].*"
4

1 に答える 1

0

正規表現の構文によると、各一致に「-」文字 (正規表現の [-]) を含める必要があるため、「-」のない単語は一致しません。
それを意図した場合は、[-] は通常の方法ではなく、\- を使用します。'-' を常に一致させるつもりがなかった場合は、[az] に追加したかった可能性があります。正しい構文は次のとおりです。

^.*[0-9].*[a-z-].*$

ただし、[az-] は 1 文字のみに一致することに注意してください。

^.*[0-9].*[a-z-]*$

また

^.*[0-9]*[a-z-]*$
于 2012-07-16T15:55:30.707 に答える