字符,符号或数字之前或之后的空格;但是,不是介于两者之间

时间:2014-12-25 05:37:18

标签: javascript jquery regex string

我试图编写一个正则表达式,在任何字符(字母,符号或数字)之前或之后选择空格,但不能在字符组成的单词之间选择空格。

例如,在' abc'中,之前的空格会匹配;但是,在'words words words'中,不会选择中间的空格。

因此在' hello world to everyone '中,只会选择前导和尾随空格。

奖励:如果有单独的方法,在第二个正则表达式中,选择中间的空格,这将有助于。

我试图做的是,在javascript中,最小化句子中的空格,以便前导和尾随空格消失,并且中间的空白字缩小到1个空格。

3 个答案:

答案 0 :(得分:3)

<强> Reference Link

var string = "    hello world     to       everyone. ";
string = string.trim().replace(/\s+/g, " ");
alert(string);

<强> JS Fiddle

答案 1 :(得分:2)

你是否想让多空间成为一个空间?只是做:

var text="hello world  to    everyone";
text=text.trim().replace(/\s+/g," ");

document.write(text); // It will print 'hello world everyone'

答案 2 :(得分:0)

仅通过正则表达式和正则表达式

您可以通过正则表达式执行此操作,而无需使用任何js内置函数,如trim()

> var s = '    hello    world   to    everyone   '
> s.replace(/^\s+|\s+$|\s*(\s)/g, "$1")
'hello world to everyone'

DEMO

<强>解释

  • ^\s+匹配前导的一个或多个空格。
  • |
  • \s+$匹配尾随空格。
  • |
  • \s*(\s)从剩下的字符串中,此正则表达式将匹配零个或多个空格并捕获最后一个空格。所以捕获的组即组索引1是一个单独的空间。
  • 用组索引1中存在的空格替换所有匹配的空格将为您提供所需的输出。