在逗号和句号后添加空格,但如果是十进制分隔符,则不添加空格
add spaces after commas and full stops, but not if it is a decimal separator
我有一个表单,里面有一个文本字段,用来填充网站的用户。用户通常不会在逗号和句号后加空格。如何用javascript格式化这个文本区域,以便在逗号和句号后面添加空格,但要保留这些字符,即表示数字的十进制分隔符。我试过使用replace(/',/g,', ')
,但这也在数字的小数分隔符后面加了空格。
感谢
这里是使用拆分的非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"
时,你会得到意想不到的结果。
使用捕获组和负数标识符。
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"
然而,如果你有两个句子由两个数字分隔,例如,"…………blah 1.2是数字……",那么这不会插入空格。
您可以将正则表达式扩展为逗号,也可以只使用相同的模板。
您需要向正则表达式添加更多上下文——也许逗号之类的东西必须与字母接触?,replace(/[a-zA-Z]?,.?/gi, ', ')
相关文章:
- 在点后添加空格,但不在 URL 中添加空格
- 在逗号和句号后添加空格,但如果是十进制分隔符,则不添加空格
- Regex用于在特定条件下为新句子添加空格或句号
- 如何在字符串变量的开头和末尾添加空格
- 在字符串 jquery 中添加空格
- 在图像之前添加空格,javascript
- 在 JavaScript 中使用正则表达式在单词的任一侧添加空格
- 在选择选项中添加空格
- 根据类添加空格以保存文本文件
- 如何创建一个在字符串中查找大写字母并添加空格的函数
- Javascript匹配字符并在两者之间添加空格
- 在数字后添加空格
- 如何在正则表达式中添加空格
- 在 Javascript document.write 中添加空格
- 如何在高图表字幕选项中添加空格
- JavaScript正则表达式为字符串中的每个项目添加空格
- 在x轴和带时间刻度的直线之间添加空格
- 如何在 ng 重复元素后添加空格
- 根据元素宽度向javascript字符串添加空格
- 在TinyMCE中键入时,在字符前添加空格