文字列内の文字を置き換えたい、例えば
下書き [ 2 ]
に:
下書き [ 3 ]
この正規表現は Drafts 3のみを返します:
str.replace(/\[(.+?)\]/g, 3)
事前に助けてくれてありがとう
文字列内の文字を置き換えたい、例えば
下書き [ 2 ]
に:
下書き [ 3 ]
この正規表現は Drafts 3のみを返します:
str.replace(/\[(.+?)\]/g, 3)
事前に助けてくれてありがとう
以下以上のものが必要ですか?
var num=2 // parse this from drafts [2]
num++;
var newstr=str.replace(/\[(.+?)\]/g, "["+num+"]")
または、角かっこは入力ごとに<> {}に変更できますか?
replace-stringの代わりに関数を指定することもできます。
var str = "Drafts [2]";
function replacer(match, p1, p2, p3, offset, string) {
return p1 + (1+parseInt(p2)) + p3;
}
var newstr=str.replace(/([\[(])(.+?)([\])])/g, replacer);
alert(newstr); // alerts "Drafts [3]"
角かっこを実際に一致させる代わりに、ゼロ幅のアサーションを使用します。
編集:Javascriptには後読みがありません。:c
一般的な解決策として、周囲のコンテンツをキャプチャし、後方参照を使用して置換文字列に戻すことができます。
str.replace(/(\[).+?(\])/g, "$13$2")
または、ハードコードされたブラケットを置換に含めることもできます。
次のように、ブラケットを置換テキストに追加するだけです。
str.replace(/\[(.+?)\]/g, "["+3+"]")
編集:括弧内の数字で何かをする必要がある場合は、置換テキストの代わりに関数を使用できます:
str.replace(/\[(.+?)\]/g, function(string, first){
// string is the full result of the regex "[2]"
//first is the number 2 from "draft [2]"
return "["+(first++)+"]";
})