如何拆分和替换字符串中的特定字符?

时间:2016-07-06 14:28:32

标签: javascript jquery arrays replace splice

我正在尝试创建一个自动格式化文本框的功能,因为用户在加拿大邮政编码中输入内容。

这是我原来的功能,但问题是如果该人以错误的格式写入,则无法捕获。 EX。 AA1 10A时应始终采用A0A 0A0的格式。

        $("#tbPostalCode").on("change keyup paste", function(){
            var output;
            var input = $(this).val();
            input = input.replace(/[^a-zA-Z0-9]/g, '');
          input = input.toUpperCase();
            var front = input.substr(0, 3);
            var end = input.substr(3, 5);
            if (front.length < 3) {
                output = front;
            } else if (front.length == 3 && end.length < 3) {
                output = front+ " " + end;
            } else if (front.length == 3 && end.length == 3) {
                output = front+ " " + end;
            }
            $(this).val(output);
        });

这就是我一直努力的工作。基本上拆分字符串并根据regEx要求替换索引的特定点。所以我只想弄清楚如何使这项工作。

        $("#tbPostalCode").on("change keyup paste", function(){
            var output;
            var input = $(this).val();
    input = input.splice("");
            input[1,4,6] = input.replace(/[^0-9]/g, '');
    input[0,2,5] = input.replace(/[^a-zA-Z]/g,'');
          input = input.toUpperCase();
            var front = input.substr(0, 3);
            var end = input.substr(3, 5);
            if (front.length < 3) {
                output = front;
            } else if (front.length == 3 && end.length < 3) {
                output = front+ " " + end;
            } else if (front.length == 3 && end.length == 3) {
                output = front+ " " + end;
            }
            $(this).val(output);
        });

代码块1小提琴:https://jsfiddle.net/jessica_mather123/730gj842/7/

代码块2小提琴:https://jsfiddle.net/jessica_mather123/f21sx97j/

这是我希望它遵循的RegEx:

[A-Za-z]\d[A-Za-z][ -]?\d[A-Za-z]\d

Regular expression visualization

Debuggex Demo

1 个答案:

答案 0 :(得分:0)

HTML5 input validation可以跨浏览器处理这个问题。自动删除输入而不提供有关正在发生的事情的通知会导致令人困惑的UI体验。尝试HTML输入/表单验证。你可以在那里插上正则表达式......