JavaScript 正则表达式 - 从开始和结束处删除空格

JavaScript Regex - Remove Whitespace from Start and End

我在下面的挑战中工作了大约 3 个小时,我的 none 代码运行正常。决定查看解决方案以了解我为什么不工作。当我查看解决方案时,我感到很困惑,因为我认为 \s 是为了识别空格而不是删除它们......有人可以帮我解释一下为什么使用 \s 而不是 \S 以及为什么使用空字符串 ( "") 去掉两端的空格。

挑战

编写正则表达式并使用适当的字符串方法删除字符串开头和结尾的空格。

//SOLUTION

let hello = "   Hello, World!  ";
let wsRegex = /^\s+|\s+$/g; 
let result = hello.replace(wsRegex, "");

replace 的第二个参数是您将从第一个参数的匹配项中替换的内容。

正则表达式将 match/select 字符串开头 (^) 和结尾 ($) 的空格,然后替换为“”。

当您使用正则表达式 /(\S)/g 时,您将匹配除空格以外的所有内容,在这种情况下,您将使用类似 hello.replace(/(\S)/g, '');

的内容

表示您的正则表达式的第一组。

  • \s表示正则表达式中的白色space字符,如
  • ^表示字符串的开头
  • $表示字符串结束
  • |表示OR(匹配左边或右边)
  • + 表示 1 个或更多(基于左侧的规则)
  • /a regex/g g 表示“全局”,又名“多次匹配”,因为您可能需要在开头和结尾进行匹配

所以正则表达式的意思是:

/^\s+|\s+$/g
/         /       Wrap the regex (how you do it in JS)
 ^\s+             Try to match at the beginning one or more whitespace chars
     |            Or...
      \s+$        Try to match whitespace chars at the end
           g      Match as many times as you can

String.prototype.replace 将在正则表达式中找到的匹配项替换为作为第二个参数提供的字符串,在本例中为空字符串。

所以内部流程是:

  1. 查找与正则表达式匹配的所有部分(开头为白色space,结尾为白色space
  2. 将每个匹配项替换为 "",完全删除这些匹配项

let hello = "   Hello, World!  ";
let wsRegex = /^\s+|\s+$/g; 
let result = hello.replace(wsRegex, "");

console.log('"' + result + '"');

大多数人在使用全局标志时使用 String.prototype.replaceAll 而不是 .replace (

let hello = "   Hello, World!  ";
let wsRegex = /^\s+|\s+$/g; 
let result = hello.replaceAll(wsRegex, "");

console.log('"' + result + '"');