JavaScript 正则表达式 - 从开头和结尾删除空格

标签 javascript regexp-replace

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

挑战

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

//SOLUTION

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

最佳答案

  • \s 表示正则表达式中的空白字符,如
  • ^ 表示字符串的开头
  • $ 表示字符串的结尾
  • | 表示 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. 查找与正则表达式匹配的所有部分(将是开头的空格和结尾的空格
  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 + '"');

关于JavaScript 正则表达式 - 从开头和结尾删除空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68011006/

相关文章:

javascript - 这个流错误是什么意思?

javascript - 刷新页面后 Angular 8 松散数据

javascript - IE11的快捷键实现

javascript - 为什么函数 showStar() 不能与 (Return) 一起使用,而是根据行增加星号?

javascript - 如何从 RegExp 中由 OR 运算符分隔的多个单词中首先匹配更大的单词?使用 java 脚本

sql - 比较来自两个不同表的两列的逗号分隔值

javascript - 在预保存钩子(Hook)中获取 Mongoose 构造函数数据

mysql - MySQL 如何替换第一次出现字符串后的所有内容

sql - 使用 REGEXP_REPLACE 替换起始字符串和结束字符串之间的任何内容(包括特殊字符)

hadoop - 替换配置单元中的管道 (|) 符号