我在下面的挑战中工作了大约3个小时,我的代码都没有工作。决定看看解决方案,以了解为什么我没有工作。当我看到解决方案时,我感到困惑,因为我认为\s是为了识别白色而不是删除它们......有人能给予我解释一下为什么使用\s而不是\S,以及为什么使用空字符串(“”)来去掉两端白色。
*挑战
编写一个正则表达式,并使用适当的字符串方法来删除字符串开头和结尾的空格。
//SOLUTION
let hello = " Hello, World! ";
let wsRegex = /^\s+|\s+$/g;
let result = hello.replace(wsRegex, "");
3条答案
按热度按时间ws51t4hk1#
\s
表示正则表达式中的空白字符,如空格、制表符等。^
表示字符串的开头$
表示字符串的结尾|
表示OR(匹配左侧或右侧)+
表示1或更多(基于左侧的规则)/a regex/g
g
意味着“全局”,也就是“多次匹配”,因为您可能需要在开始和结束时进行匹配所以正则表达式的意思是:
String.prototype.replace将正则表达式中找到的匹配项替换为作为第二个参数提供的字符串,在本例中为空字符串。
内部流程是:
1.查找所有与regex匹配的节(开头和结尾都是空白
1.用
""
替换每个匹配项,完全删除这些匹配项大多数人在使用全局标志时使用String.prototype.replaceAll而不是
.replace
ff29svar2#
replace
的第二个参数用于替换第一个参数的匹配项。正则表达式将匹配/选择字符串开头(^)和结尾($)的空格,然后将被替换为“"。
当你使用正则表达式
/(\S)/g
时,你匹配除了空格之外的所有内容,在这种情况下,你将使用类似hello.replace(/(\S)/g, '$1')
的东西;$1
表示正则表达式的第一组。y3bcpkx13#