我在以下挑战中工作了大约 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将正则表达式中的匹配项替换为作为第二个参数提供的字符串,在本例中为空字符串。
所以内部流程是:
- 查找与正则表达式匹配的所有部分(将是开头的空格和结尾的空格
- 用
""
替换每个匹配项,完全删除这些匹配项
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/