选择一个字符串并忽略空格

时间:2018-05-15 18:24:23

标签: javascript regex

有谁知道如何选择文字" 有些词和&事物(lp4)"下面?

我正在尝试选择两个空格\s之间的[某事],并且在选择中有一个或多个+\b



var string = '     \n       Some words & things (lp4)    ';
var regexp = /\s[\b*]\s/i;
var selection = string.match(regexp);

console.log(selection);




2 个答案:

答案 0 :(得分:2)

我不清楚你想要实现的目标。所以我将介绍两种可能性。

第一种情况:删除空格

如果您基本上只想要删除前导和尾随空格字符,那么trim()就足够了:

var string = '     \n       Some words & things (lp4)    ';
var selection = string.trim();
console.log(selection);

这将记录

Some words & things (lp4)

到控制台。

第二种情况:只替换单词

在这种情况下,正则表达式确实很有帮助。

var string = '     \n       Some words & things (lp4)    ';
var regexp = /\s+(\S+(\s\S+)*)\s+/i;
var match = string.match(regexp);

if (match === null) {
  console.log('No match was found!');
} else {
  console.log('Match (words only) is: ' + match[1]);
  var replaced = string.replace(match[1], 'New replacement text');
  console.log('Replaced value: "' + replaced + '"');
}

此处的正则表达式为\s+(\S+(\s\S+)*)\s+。让我把它分解成碎片:

  • \s+:查找空格字符(\s),并允许一个或多个出现(+) - 即开头的空白
  • \S+:查找非空白字符(\S),并允许零次或多次出现(+) - 这基本上只是一个单词
  • (\s\S+)*:查找单个空格字符(\s),后跟一个或多个非空白字符(+)的出现(\S),并允许整件事零次或多次 - 这些基本上都是在第一个单词之后的所有单词
  • 外部辅助()用于捕获一个组中的所有单词 - 这将是比赛中的第一个组
  • \s+:查找空白字符(\s),并允许一个或多个出现(+) - 即最后的空白

最后,此代码的输出将是:

Match (words only) is: Some words & things (lp4) 
Replaced value: "     
   New replacement text    "

也就是说,空格将保留在输出中,如双引号的位置所示。

答案 1 :(得分:1)

实际上,您尝试删除多个空格:



var string = '     \n       Some words   & things (lp4)    ';
var regexp = /\s{2,}/gm;
console.log(string.replace(regexp, ' ').trim());