8

だから私は文字列を持っています:

"this is the beginning, this is what i want to remove/ and this is the end"

Javascript を使用してコンマとスラッシュの間の文字列をターゲットにするにはどうすればよいですか? (コンマとスラッシュも削除したい)

4

4 に答える 4

11
string = string.replace( /,.*?\//, '' );

regexpでは、それ,自体に一致し、任意の文字列に一致し (修飾子.*?により、最短の一致が優先されます) 、スラッシュに一致します。(スラッシュは正規表現の区切り記号としても使用されるため、バックスラッシュでエスケープする必要があります。残念ながら、JavaScript は代替の正規表現のリテラル区切り記号をサポートしていないため、つまようじ傾倒症候群に対処する必要があります。)?\/

上記のコードは、文字列内の最初のコンマから最初のスラッシュまでのすべてを削除することに注意ください。複数のコンマまたはスラッシュがある場合にどうしたいかによって、正規表現の動作を変更するさまざまな方法があります。例えば:

  • .replace( /,.*\//, '' )最初のカンマから最後のスラッシュまですべてを削除します。
  • .replace( /^(.*),.*?\//, '$1' )最後のコンマから次のスラッシュまでのスラッシュからすべてを削除します。
  • .replace( /^(.*),.*\//, '$1' )文字列最後のカンマからスラッシュまでのすべてを削除します。
  • .replace( /,[^\/]*\//, '' )元の正規表現と同じことを行います。つまり、最初のコンマから最初に続くスラッシュまでのすべてを削除します (間に他のコンマがあっても)。
  • .replace( /,[^,\/]*\//, '' )コンマで始まりスラッシュで終わる最初の部分文字列を削除し、間にコンマやスラッシュを含まない;
  • .replace( /^(.*),[^,\/]*\//, '$1' )コンマで始まりスラッシュで終わる最後の部分文字列を削除し、その間にコンマやスラッシュを入れない; と
  • .replace( /^,[^,\/]*\//g, '' )コンマで始まりスラッシュで終わり、間にコンマやスラッシュがないすべての部分文字列を削除します。

また、正規表現構文の歴史的な癖により、.メタ文字は実際には改行 ( )以外"\n"の任意の文字と一致することに注意してください。ほとんどの正規表現の実装では、この癖を無効にして.実際にすべての文字を一致させる何らかの方法が提供されていますが、JavaScript は何らかの理由でそれを提供していません。文字列に改行が含まれる可能性がある場合は.、上記の正規表現で出現するすべての を、 (ほとんどの PCRE スタイルの正規表現エンジンで動作する) または(より短いが、JavaScript の正規表現フレーバーに固有)などの回避策に置き換える必要があります。[\s\S][^]

于 2012-09-25T11:41:18.790 に答える
3

あなたの質問は正規表現でタグ付けされているため、次のことが必要なようです.replace:

return str.replace(/, this is what i want to remove\//, "");

間の文字列がわからない場合は、使用します

/,(.+?)\//

または、文字列が空である可能性が*ある場合は、の代わりに+

文字列関数では、次のようになります

var cpos = str.indexOf(","),
    spos = str.indexOf("/");
if (cpos > -1 && spos > cpos)
    return str.substr(0, cpos)+str.substr(spos+1);
于 2012-09-25T11:41:57.673 に答える
-1
var commaIndex=str.indexOf(',')
var slashIndex=str.indexOf('/')
var finalString=str.substring(commaIndex,slashIndex)

それがうまくいくことを願っています

于 2012-09-25T11:40:57.770 に答える