我正在尝试将用户的输入格式化为单个空格,因为我将使用输入来比较结果中的字符串。问题是比较功能仅适用于单个空间,因此当用户意外添加一些额外的空格或按回车键时,它将无法工作。
这是我的正则表达式和代码加上小提琴:http://jsfiddle.net/purmou/eSE9Y/
HTML
<textarea id="input"></textarea>
<button>Submit</button>
的javascript
$("button").click(function(){
$('#input').val($('#input').val().replace(/[\t ]+/g,' '));
});
我已经解决了额外的空格部分我唯一的问题是“输入”部分。
答案 0 :(得分:1)
可以在RegEx中使用\n
表示换行符。所以,只需像这样改变您的RegEx
/[\t\n ]+/g
相反,您可以使用此正则表达式
简单地用一个空格替换所有空白字符/\s+/g
引自MDN RegularExpressions page,关于\s
匹配单个空格字符,包括空格,制表符,表单 饲料,换行。相当于 [ \˚F\ n \ r \吨符\ v \ u00a0 \ u1680 \ u180e \ U2000 \ U2001 \ u2002 \ u2003 \ u2004 \ u2005 \ u2006 \ u2007 \ u2008 \ u2009 \ u200a \ u2028 \ u2029 \ u202f \ u205f \ U3000]。
答案 1 :(得分:1)
使用\s+
来匹配所有空格字符,包括空格,制表符,换行符等。
$('#q').val($('#q').val().replace(/\s+/g,' '));
演示:http://jsfiddle.net/eSE9Y/1/
\ s代表“空白字符”。 (...)这实际包含的字符取决于正则表达式的味道。 (...)\ s匹配空格,制表符,换行符或换页符。大多数口味还包括垂直标签(...)。在支持Unicode的风格中,\ s通常包括Unicode“分隔符”类别中的所有字符。 Java和PCRE再次成为例外。但JavaScript确实将所有Unicode空白与\ s匹配。