2

私は現在、この正規表現を使用しています:

^[a-zA-Z0-9&.""')#*:;<>&`=%?@\}!{(,_+-/$ \[\]\\]+$

そして、私は特殊文字を受け入れます:

[a-zA-Z0-9éèêëËÉÈÊàâÀÂîïÎÏçÇôÔûÛùÙ&`.""')#*:;<>&=%?@\}!{(,_+-/$ \[\]\\]+

ユーザーが引用符を入力し、再び引用符を取得した場合にのみ、アプリケーションは最初の正規表現を受け入れます。

受け入れる必要があります:

  • こんにちは「エテ」ddd
  • 「エテ」こんにちは
  • 「エテ」
  • こんにちは

しかし、私たちは受け入れません:

  • エテ
  • て「ああ」
  • 「ああ」エテ
4

1 に答える 1

1

このようなもの?

^(?:[a-zA-Z0-9&.')#*:;<>&`=%?@\}!{(,_+-/$ \[\]\\]+|"[a-zA-Z0-9éèêëËÉÈÊàâÀÂîïÎÏçÇôÔûÛùÙ&`.')#*:;<>&=%?@\}!{(,_+-/$ \[\]\\]+")+$

これは、最初の文字セット (基本的なラテン文字、数字、さまざまな記号) または引用符で囲まれた 2 番目の文字セット (フランス語の文字など) のいずれかに一致します。IgnoreCasecaseオプションを使用すると、これを少し単純化できます。

^(?:[a-z0-9&.')#*:;<>&`=%?@\}!{(,_+-/$ \[\]\\]+|"[a-z0-9éèêëàâîïçôûù&`.')#*:;<>&=%?@\}!{(,_+-/$ \[\]\\]+")+$

ここでテストできます。


更新部分的な入力に一致する式が必要なようです。たとえば、hello "é受け入れられる必要があります。一般に、これは非常に難しく、通常は 2 つのパターンを使用することをお勧めします。1 つは完全な入力を検証するためのもので、もう 1 つは部分的な入力を検証するためのものです。

部分入力をサポートするには、これを使用します。

^(?:[a-z0-9&.')#*:;<>&`=%?@\}!{(,_+-/$ \[\]\\]*|"[a-z0-9éèêëàâîïçôûù&`.')#*:;<>&=%?@\}!{(,_+-/$ \[\]\\]*(?:"|$))+$

"末尾をに置き換えたことに注意してください"|$。これにより、引用されたテキストを閉じるか、文字列の最後で終了することができます。ただし、テキストの入力が完了したら、引用されたテキストを確実に閉じたい場合は、完全なパターンを使用する必要があります。

于 2013-08-21T19:29:26.120 に答える