JavaScript正則、あなたが望む姿勢は私にはあります.
2604 ワード
jsでは正規表現の機能が非常に強く、マッチング、置換、検索ができます.正則をうまく利用すれば、仕事の半分の効果を達成することができます.基本的な内容は余計なことではありませんが、ここでは無視されやすいテクニックについて話します.
マッチング数
文字セット
true
逆文字セット
パターンマッチング
1、==(x)==
2、==(?:x)==
3、==x(?=y)==
4、==(?<=y)x==
5、==x(?!y)==
6、==(?
境界一致
==b==bは単語の境界に一致します.1つの語の境界は、1つの語が他の文字に従わない位置、または他の文字がその前にない位置である.一致する語の境界の内容の長さは0です.文字列「script」
マッチング数
{n}
マッチングn回{n,}
マッチングがn回以上{n,m}
マッチングがn回以上・m回以下*
前の式を0回以上、{0,}+
前の式を1回以上、{1,}?
前の式を0回または1回マッチングします.に相当します.*+について?{}すると、量詞は非貪欲になります.文字セット
[abc]
は、角カッコ内の任意の文字を表す文字セットです.「-」を使用して、[a-c]
同等[abc]
対(.)の範囲を指定することもできます.(*)などの特殊な記号は、文字セットに特別な意味を持たず、自分の文字だけを表します.(エスケープを行わなくてもよい)注意:文字セットには順序制限がありません.次の例です./[.a-z]+/.test('abc.d.ef')
true
逆文字セット
[^abc]
逆文字セットで、角カッコが含まれていない文字と一致します.パターンマッチング
1、==(x)==
(x)
、xに一致し、一致を覚えます./(abc) (def) \1 \2/
上の正則において(foo)(bar)文字列「abc def abc def」の最初の2つの単語をマッチングして記憶し、パターンの1 2はマッチング文字列の後の2つの単語である.1 2 nこの方式は式のマッチングの一環で用いられる.$1、$2、$nのように正規表現の置換セクションで使用されます.例:'abc def'.replace( /(...) (...)/, '$2 $1' )
2、==(?:x)==
(?:x)
、xにマッチしているがマッチングを覚えていないことを非キャプチャカッコと呼ぶこともできる./abc{1,2}/
のように、マッチング数は最後のアルファベット「c」に対してのみ有効になります.非捕獲括弧を使用した後/(?:abc){1,2}/
この場合、マッチング数は「abc」に対して有効になります.3、==x(?=y)==
x(?=y)
は、「x」に一致し、「x」の後ろに「y」が付いている場合にのみ一致する.先行断言ともいう./Java(?=Script)/
「Java」にマッチする可能性があります.条件は「Script」に続く場合です.「Script」はマッチング結果の一部ではないことに注意してください.例:/Java(?=Script)/.test('JavaScript') // true
/Java(?=Script)/.test('JavaEE') // false
4、==(?<=y)x==
(?<=y)x
は、「x」に一致し、「x」の前が「y」の場合にのみ一致する.後行断言ともいう./(?<=Java)Script/
「Script」にマッチするのは、その先が「Java」の場合のみです.同じ「Java」でもマッチング結果の一部ではありません.例:/(?<=Java)Script/.test('JavaScript') // true
/(?<=Java)Script/.test('TypeScript') // false
5、==x(?!y)==
x(?!y)
は、「x」の後ろに「y」が付いていない場合にのみ「x」と一致する.正否定検索とも呼ばれます.例:/Java(?!Script)/.test('JavaScript') //false
/Java(?!Script)/.test('JavaEE') //true
6、==(?
(?, x y x。 。
:
/(?
境界一致
==b==bは単語の境界に一致します.1つの語の境界は、1つの語が他の文字に従わない位置、または他の文字がその前にない位置である.一致する語の境界の内容の長さは0です.文字列「script」
/\bs/
のように、「script」の「s」に一致する./cr\b/
「script」の「cr」に一致しない.「cr」は1文字「i」に続くからだ./pt\b/
「script」の「pt」に一致します.「pt」はこの文字列の最後の部分だからです.これで彼は文字に追いつかれなかった./\w\b\w/
いずれの文字列も一致しない.1つの単語の間の文字が文字追従なしと文字追従なしの両方を同時に満たすことは永遠に不可能であるからである.==B==これに対応する用法は\B
であり,非単語境界にマッチする.文字列「pest text」/t\B../
のように、'tex'に一致します.