2016-07-13 11 views
4

文字列の先頭と末尾に角括弧がある場合は削除します。私は正規表現を構築しようとした文字列の先頭と末尾に角括弧を削除します。

Just a string 
Just a string 
Just a string [comment] 
Just a string [comment] 

[Just a string] 
Just a string 
Just a string [comment] 
[Just a string [comment]] 

が生じるはずであるが、それは位置を探さないように私は、正しい方法でそれを得ることはありません:

string.replace(/[\[\]]+/g,'') 
+4

何? –

+1

'^'と '$'アンカーを使用してください –

+0

@ウィキニュースこの投稿は無効ですが、 'Just a string [comment' – user3142695

答えて

7
string.replace(/^\[(.+)\]$/,'$1') 

このトリックを行う必要があります。

  • ^は、文字列
  • $の初めには、文字列の末尾にマッチ一致しました。
  • (.+)は、最後の文字列に戻すために、すべてのものを一致させます。おそらく
+1

'console.log(" [a a just [string] "。replace(/^\[()+/$$、'$ 1 '));' "' – Cerbrus

+8

OPは、ブラケットマッチャーを作成したくないだけです。両方とも存在する場合は、最後と最初のブラケットを削除する正規表現です。あまりにも重視しないでください。 – blue112

+0

あなたは_ "OPはブラケットマッチャーを構築したくありません"と仮定しています。私たちはどちらも仮定しており、潜在的な欠陥を指摘しています。 – Cerbrus

0

それを行うには良いのREG EXPが、基本的な1は次のようになります。

var strs = [ 
 
    "[Just a string]", 
 
    "Just a string", 
 
    "Just a string [comment]", 
 
    "[Just a string [comment]]" 
 
]; 
 

 
var re = /^\[(.+)\]$/; 
 
strs.forEach(function (str) { 
 
    var updated = str.replace(re,"$1"); 
 
    console.log(updated); 
 
});

Reg Exp Visualizer

+0

これはblue112のソリューションと同じです。 –

+1

これは、あなたがコーヒーを飲み、答えを出すときに起こることです – epascarello

0

Blue112から[]を除去するためのソリューションを提供行の先頭/末尾(両方が存在する場合) )。 (両方が存在する場合)

あなたは、任意の記号を一致させるために

input.replace(/^\[([\s\S]*)]$/,'$1') 

やJSで

input.replace(/^\[([^]*)]$/,'$1') 

を、必要 文字列の開始/終了から []を削除するには改行を使用する場合は、いずれも と一致する[\s\S](または[\w\W]または[\d\D])または[^]を使用します。。 `[単なる文字列[コメント]`について

var s = "[word \n[line]]"; 
 
console.log(s.replace(/^\[([\s\S]*)]$/, "$1"));

関連する問題