2

使用 mootools 我有一个像这样的正则表达式:

new RegExp('^([^\\D'+ separator +']+)(\\d{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 回答