javascript - 在输入字段中键入时使用正则表达式替换

标签 javascript regex

我有这个正则表达式:

(/(\d{2})(\d{3})(\d{2})/g;

我想要做的是在键入时用“”替换每 2 个、每 3 个和每 2 个字符。这意味着如果我输入“123”,它应该被格式化为“12 3”,如果我输入“12345”,它应该被格式化为“12 123”

但是,我只在每 7 个字符后得到一个间距。 这是一个 jsfiddle:http://jsfiddle.net/K4WXc/257/

非常感谢您的帮助!

最佳答案

我修改了你的fiddle如下图:

    return v.replace(/^(\d{2})(\d{1,3})(\d{0,2}).*/, function (match, a, b, c) {
        return a + ' ' + b + (c == '' ? '' : ' ' + c);
    });

请记住,就在这个 block 之前,您已经删除了所有非数字,这个 block 只需要数字(没有空格)。

匹配2位开头的数字:^(\d{2})

然后1到3作为下一个捕获组:(\d{1,3})

如果第二组中有 3 个,它会再捕获最多 2 个:(\d{0,2})

除此之外的任何内容都将被丢弃:.*

使它能够在您键入时匹配“不完整”条目的重要部分是,即使您没有键入第 2 组或第 3 组的所有 3 个数字,它也会匹配。

注意:原始替换的主要问题是缺少代表整个匹配字符串的第一个参数。

关于javascript - 在输入字段中键入时使用正则表达式替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38720381/

相关文章:

javascript - 如何让 div 自动调整它的高度,但保持图标中的图像居中对齐

javascript - 这个正则表达式是解析字符串的最有效方法吗?

regex - 如何应用这个正则表达式?

javascript - 从数组中随机选择但在 for 循环内无法按预期工作

javascript - 阻止 jQuery 小部件事件

javascript - 使用 RegExp 获取一个数组项的索引

javascript - 有什么方法可以使用 javascript 在 2 个不同的特殊字符中提取字符串?

php - 使用 PHP 在 CSS 中搜索内容

javascript - 在页面加载时将 aria-expanded ="true"更改为 false

javascript - 在模型级别覆盖 Backbone.sync() 以发送额外的参数?