正则表达式:使“输入”和额外的空格等于单个空格?

时间:2014-01-13 10:06:37

标签: javascript html regex

我正在尝试将用户的输入格式化为单个空格,因为我将使用输入来比较结果中的字符串。问题是比较功能仅适用于单个空间,因此当用户意外添加一些额外的空格或按回车键时,它将无法工作。

这是我的正则表达式和代码加上小提琴:http://jsfiddle.net/purmou/eSE9Y/

HTML

<textarea id="input"></textarea>
<button>Submit</button>

的javascript

$("button").click(function(){
    $('#input').val($('#input').val().replace(/[\t ]+/g,' '));
});

我已经解决了额外的空格部分我唯一的问题是“输入”部分。

2 个答案:

答案 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匹配。

参考:http://www.regular-expressions.info/shorthand.html