2

mootoolsを使用して私はこのような正規表現を持っています:

new RegExp('^([^\\D'+ separator +']+)(\\d{2})');

文字列では、2文字ごとに区切り文字で定義された文字を挿入します。最後の2つだけ挿入したい。

例:

 String     Result
 123456     12.34.56  // what it does now
 123456     1234.56   // what it should do

私は正規表現の経験があまりないので、ヘルプや適切なチュートリアルへのリンクをいただければ幸いです。

4

3 に答える 3

2

文字列が数字だけで構成されている場合、これは 100 で除算することと同じではありませんか?

'' + str / 100

ただし、ロケールに依存する場合があります;-)

対応できるエッジケースが他にもあれば、この回答を改善できます。


絶対に正規表現だけが必要な場合は、いつでもこれを使用できます。

'123456'.replace(/(.)(\d{2})$/, function($0, $1, $2) { 
    return $1 + '.' + $2; 
});

NaNこれにより、そうでなければ'foo'.

于 2012-06-27T09:55:28.230 に答える
1

これには正規表現を使用しないでください。

var str = "123456".split('').reverse().join('');
var x = str.substring(0,2) + '.' + str.substring(2);
var final = x.split('').reverse().join('');

console.log(final);

ライブデモ

もちろん、文字列の長さが2より大きいかどうかを確認できます

if (str.length > 2)
    // ...

または文字列slice関数を使用します。

str ="123456";
str.slice(0, -2) + "." + str.slice(-2);

それはどのように機能しますか? 私はそれをバラバラにします:

// Start at the beginning of the string grab all the chars 
// and stop two chars before the end of the string
str.slice(0, -2)

// Start at two chars before the end of the string, take all the chars until  
// the  end of the string.
str.slice(-2);
于 2012-06-27T09:52:18.453 に答える
0

文字列が常に 2 文字以上であると仮定します。

str.slice(0, -2) + "." + str.slice(-2)

String.sliceへの参照。

于 2012-06-27T10:08:07.307 に答える