3

わかりました、私はすでにいくつかの悪夢を見たので、Stackoverflow の全能のハイブ マインドに愚かな頭を下げます。

UPD: タスクのパラメーターが変更されました。括弧 () や @、#、&、$ などの特殊文字を含むコードを見つける必要があります。

したがって、コードは次のようになります。

"A"、"Bb"、"2C8"、"A7(BO)19"、B29H$、29H(6JI)0# など

問題は、これらのコードがすべてオプションであることです。Barmar (返信 1 を参照) が提案したように試しましたが、MySQL クエリをわずかに変更しました。

SELECT *
FROM table
WHERE column REGEXP '^[a-z0-9\@\#\$\&()]*$' 
AND column LIKE CONCAT('%', '$v', '%')

「SLJ」または「S(LJ)」を検索しても、「S(LJ)9」または「09S(LJ)3$」は返されません。

さて、脳をより効率的に使用できるようにする (または脳を使用する) ことができるようになる、私の DNA 内のいくつかの本当に重要なヌクレオチド配列は別として、この正規表現またはクエリ自体に何が欠けているのでしょうか? 事前に感謝します。

4

1 に答える 1

2
SELECT *
FROM table
WHERE column REGEXP '^[a-z0-9()]*$' /* code contains alphanumerics and parentheses */
AND column NOT REGEXP '[0-9]{3}' /* code does not contain >2 digits in a row */
AND column LIKE CONCAT('%', ?, '%') /* code contains the user input */

どこ ?ユーザー入力にバインドされています (PDO または mysqli の準備済みステートメントを使用する必要があります)。

于 2013-04-11T22:27:45.883 に答える