⊗jsSpREHHy 110 of 294 menu

JavaScriptの正規表現における括弧内のハイフン

ハイフンも [ ] 内では特殊文字です (ただし外側ではそうではありません)。もしハイフンそのものを文字として必要とするなら、 グループの区切りとして解釈されない位置 に置いてください。

これが重要な理由:あなたは気づかないうちに文字のグループを作ってしまう可能性があります。例えば、 '[:-@]' のように書くと、コロン、ハイフン、アットマークを選択しているつもりでも、 実際には : から @ までの間の文字グループになってしまいます。 このグループには次の文字が含まれます: ? < = > : ;

これらはどこから来たのでしょうか? ASCII テーブルからです。コロンはアットマークよりも番号が小さいため、グループができてしまうのです。 つまり、すべてのグループはASCIIテーブルに基づいて形成されます(必要に応じてこの特性を利用できます)。

これに対処する方法:ハイフンが確実にグループ文字として解釈されない位置、 例えば先頭または末尾(つまり [の直後や ]の直前)にハイフンを置きます。

ハイフンをエスケープすることもできます。そうすれば、位置に関係なくハイフンそのものを表します。 例えば、[:-@] の代わりに [:\-@] と書くと、グループにはならず、 コロン、ハイフン、アットマーク @ の3文字を表します。

次の例の検索パターンは次の通りです: 数字 1、次に 'a' から 'z' までの文字、 次に数字 2

let str = '1a2 1-2 1c2 1z2'; let res = str.replace(/1[a-z]2/g, '!');

結果、変数には次の文字列が保存されます:

'! 1-2 ! !'

では、ハイフンをエスケープしてみましょう。結果、 検索パターンは次の通りです:数字 1、次に 文字 'a'、またはハイフン、または文字 'z'、 次に数字 2

let str = '1a2 1-2 1c2 1z2'; let res = str.replace(/1[a\-z]2/g, '!');

結果、変数には次の文字列が保存されます:

'! ! 1c2 !'

エスケープせずに、単にハイフンの位置を変えることもできます:

let str = '1a2 1-2 1c2 1z2'; let res = str.replace(/1[az-]2/g, '!');

結果、変数には次の文字列が保存されます:

'! ! 1c2 !'

次の例の検索パターンは次の通りです: 最初の文字は小文字またはハイフン '-'、 その後に文字 'x'が2つ

let str = 'axx Axx -xx @xx'; let res = str.replace(/[a-z-]xx/g, '!');

結果、変数には次の文字列が保存されます:

'! Axx ! @xx'

次の例の検索パターンは次の通りです: 最初の文字は小文字、大文字、またはハイフン '-'、 その後に文字 'x'が2つ

let str = 'axx Axx -xx @xx'; let res = str.replace(/[a-zA-Z-]xx/g, '!');

結果、変数には次の文字列が保存されます:

'! ! ! @xx'

ハイフンを2つのグループの間に置くこともできます。 そこでは確実に新たなグループを作ることはありません:

let str = 'axx 9xx -xx @xx'; let res = str.replace(/[a-z-0-9]xx/g, '!');

結果、変数には次の文字列が保存されます:

'! ! ! @xx'

実践問題

次の文字列があります:

let str = 'xaz xBz xcz x-z x@z';

次のパターンに一致するすべての文字列を見つけてください: 文字 'x'、大文字または小文字 またはハイフン、文字 'z'

次の文字列があります:

let str = 'xaz x$z x-z xcz x+z x%z x*z';

次のパターンに一致するすべての文字列を見つけてください: 文字 'x'、次にドル記号、または ハイフン、またはプラス記号、その後文字 'z'

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否