这个正则表达式不适用于所有浏览器

时间:2014-06-13 06:06:51

标签: javascript regex

我的条件是:

if (/(.{4})/g.test(this.value)) this.value = this.value.replace(/(.{4})/g,'$1-');

这只适用于Mozilla。

这有什么不对吗?

我希望在四位数之后添加-。例如: 1234567 - > 1234-567

3 个答案:

答案 0 :(得分:2)

我的测试中似乎正在使用Chrome,Safari,Firefox。有一点需要注意的是,如果你最终得到四位数的偶数倍,那么你最后也会得到一个尾随短划线,所以你可能需要考虑一个负向前瞻来考虑字符串的结尾(假设它& #39;所有数字);并考虑使用\d代替数字.

var value="123456789012";
if (/(\d{4})/g.test(value)) {
    console.log(value.replace(/(\d{4})(?!$)/g,'$1-'));
}
// => "1234-5678-9012"

答案 1 :(得分:1)

我测试了下面的正则表达式here以及它在Firefox,Chrome和IE8中的工作情况。

'1234567'.replace(/(\d{4})/g,'$1-')

输出:

1234-567

您可以在regex101

上在线测试您的正则表达式

答案 2 :(得分:0)

首先,您应该使用\ d来查找数字。 如果你仍然没有运气{},你可以使用" dumb方式":/(\ d \ d \ d \ d)/ g只是为了看看它是否有任何成功差