javascript - 在逗号和句号后添加空格,但如果是小数点分隔符则不添加空格

时间:2013-12-06 18:02:39

标签: javascript regex add space

我有一个带有文本字段的表单,用于填充网站用户。用户通常不会在逗号和句号后放置空格。如何使用javascript这个文本区域格式化,以便在theese逗号和句号后添加空格,但留下那些表示数字的小数分隔符的字符。我已尝试使用replace(/\,/g,', '),但这也会在数字的小数分隔符之后放置空格。

谢谢

3 个答案:

答案 0 :(得分:1)

使用捕获组和负数字标识符。

var test = "i believe.1.5.today";
test = test.replace(/([^\d])\.([^\d])/g,'$1. $2').replace(/([\d])\.([^\d])/g,'$1. $2').replace(/([^\d])\.([\d])/g,'$1. $2')
// test == "i believe. 1.5. today"

但是,如果你有两个句子用2个数字分隔,例如,“...... blah 1.2是数字......”那么这将不会插入空格。

您可以扩展逗号的正则表达式或只使用相同的模板。

答案 1 :(得分:1)

这里是使用split的非RegExp解决方案:

function fixString(inp){
    var i, len, arr, outp, Rside, Lside, RsideIsNum, LsideIsNum;

    arr = inp.split(",");
    outp = "";

    for(i=1, len=arr.length; i<len; i++){
        Lside = arr[i-1];
        Rside = arr[i];

        LsideIsNum = /\d/.test(Lside.charAt(Lside.length-1));
        RsideIsNum = /\d/.test(Rside.charAt(0));

        outp += "," + ((LsideIsNum && RsideIsNum)?"":" ") + Rside;
    }

    return (arr[0] + outp).replace(/\s\s+/g," ");
}

然后使用它只需像这样调用fixString(my_string)

var str_old = "a,1b,c,d2,e,3f4,g, this is a test, 1,000 yay!,2,000,ok?";
var str_new = fixString(str_old);

//str_old: a,1b,c,d2,e,3f4,g, this is a test, 1,000 yay!,2,000,ok?
//str_new: a, 1b, c, d2, e, 3f4, g, this is a test, 1,000 yay!, 2,000, ok?

但是,正如我在评论中所说,当有人说"my lucky number is 7,4 out of 5 cats purr"时,你会得到意想不到的结果。

答案 2 :(得分:-1)

你需要为正则表达式添加更多上下文 - 也许像逗号必须触及一个字母?replace(/[a-zA-Z]?,.?/gi, ', ')

相关问题