5

私はそのようなjs正規表現を持っています:

/^[a-zA-ZęóąśłżźćńĘÓĄŚŁŻŹĆŃ]+$/

そして今、QVXqvx のような a-zA-Z 文字から除外したいと思います。この正規表現の構文をどのように変更する必要がありますか?

試してみましたが、うまくいきませんでした。私を助けてください。

前もって感謝します

4

4 に答える 4

8

これを行う最善の方法は、単に範囲を更新して不要な文字を除外することです。それはあなたにこれを残すでしょう:

/^[a-pr-uwyzA-PR-UWYZęóąśłżźćńĘÓĄŚŁŻŹĆŃ]+$/

負の先読みを使用して、文字クラスの減算の形式を実行できます。ただし、一致するすべての文字列に対して否定先読みを繰り返すため、効率が低下します。いずれにせよ、これは次のようになります。

/^(?:(?![qvxQVX])[a-zA-ZęóąśłżźćńĘÓĄŚŁŻŹĆŃ])+$/

これは、このように文字クラスを無制限に繰り返さない場合に最適です。

Java や .NET を含むいくつかの正規表現フレーバーは、特殊な構文を使用して文字クラスの減算を効率的にサポートします。

Java では、否定されたグループと交差します。

/^[a-zA-ZęóąśłżźćńĘÓĄŚŁŻŹĆŃ&&[^qvxQVX]]+$/

あまり知られていない事実として、Opera の Web ブラウザーは実際にネイティブ JavaScript 正規表現で上記の Java 構文をサポートしています。この機能は非標準であるため (放棄された ES4 の提案に基づいているため)、Opera は将来この機能を削除する可能性がありますが、少なくとも現在のバージョン (v11.64) では機能します。

.NET、XPath、および XML スキーマは、文字クラスの減算のための次のより単純な構文をサポートしています。

/^[a-zA-ZęóąśłżźćńĘÓĄŚŁŻŹĆŃ-[qvxQVX]]+$/
于 2012-05-28T05:59:37.370 に答える
8

範囲を指定することもできますが、それらの文字を除外する範囲を指定する必要があるため、A-PR-UWYZ のようなものです。

于 2012-05-27T22:33:44.283 に答える
1

それはいけません。この場合、除外された文字を除くすべての文字を手動で列挙する必要がありますQVXqvx

于 2012-05-27T22:30:27.153 に答える
0

/^[a-pA-PR-Ur-uWwYyZzęóąśłżźćńĘÓĄŚŁŻŹĆŃ]+$/

于 2012-05-27T23:16:54.200 に答える