私はjavascriptのような長い文字列を持っています
_var string = 'abc234832748374asdf7943278934haskhjd';
_
のようにマッチしようとしています
_abc234832748374
_-つまり-私は次のように試みました
string.match(\abc[^abc]|\def[^def]|)
しかし、その後に数字が必要なため、両方の文字列を取得できませんか?
基本的に、abc
+ 8文字後とdef
8-11文字後が必要ですか?これどうやってするの ?
リテラル文字列abc
またはdef
の後に8〜11桁の数字が必要な場合は、次のようなものが必要です。
(abc|def)[0-9]{8,11}
ここでテストできます: http://www.regular-expressions.info/javascriptexample.html
11桁以上より多くと一致させたくない場合は、アンカー(または[^0-9]
)文字列の最後。 8個以上の場合は、{8,11}
with {8}
。
既に投稿された回答について詳しく説明するには、次のようにグローバルマッチが必要です。
_var matches = string.match(/(abc|def)\d{8,11}/g);
_
これは、次の文字列のすべてのサブセットに一致します。
「g」フラグ(グローバル)は、最初のものだけでなく、すべての一致のリストを取得します。
あなたの質問では、数字ではなく8-11 charactersを要求しました。数字でも他の文字でも構いませんが、「。」を使用できます。 「\ d」の代わりに。
また、一致する各例には、「abc」または「def」の後に11文字以上あることに注意してください。桁数に制限がある場合は、次の正規表現の方が適している可能性があります。
var matches = string.match(/(abc|def)\d*/g);
var matches = string.match(/(abc|def)\d+/g);
var matches = string.match(/(abc|def)\d{8,}/g);
abc[0-9]{8}
文字列abc
の後に8桁が続きます。
最初の3文字が任意で、その後8〜11桁の場合は、[a-z]{3}[0-9]{8,11}
以下の正規表現を使用して完全に一致するものを取得し、
string.match(/(abc|def)\d{8,11}/g);
Gで終わる
"g"
はグローバル
"i"
for ignoreCase
"m"
複数行の場合