1. 描述:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
2.思路:正则表达式匹配所有空格,配合replace()函数
3. 代码
function replaceSpace(str){ if(str && typeof str === "string"){ // 替换所有空格 return str.replace(/\s/g, "%20"); // 去掉开头和结束的空格 return str.replace(/^\s|\s$/g,'%20'); // 去掉中间的空格,而保留开头和结尾的空格 return str.replace(/(\S)\s+(\b)/g,'$1$2') } }console.log(replaceSpace(" We Are Happy "));
4. 结果
%20We%20Are%20Happy%20 %20We Are Happy%20 WeAreHappy
5. 总结
replace()函数
\s 表示匹配所有的不可见字符,包括空格、制表符、换页符等等
\S 表示匹配所有可见字符
| 在正则中表示或
^$ 表示开头和结尾
\w 表示[a-zA-Z0-9]
\b 表示匹配单词的边界,不匹配任何字符;\b是0宽度的;一侧是构成单词的字符,另一侧是非单词字符、字符串的开始或结束。比如“ We Are Happy ”中W,e, ,等包括空白字符都会占一个位置,可以叫“显式位置”;而W和e中间的位置,叫“隐式位置”,\b就是这个隐式位置;而\b匹配的位置是:它的前一个字符和后一个字符不全是\w
var str = 'hello hlo world fjw hlo';// 匹配 hlo 这个单词,第一个\b前面一个字符是空var reg = /\bhlo\b/gvar test = str.replace(reg,'hhhh');console.log(test) // hello hhhh world fjw hhhh
作者:椰果粒
链接:https://www.jianshu.com/p/49ece177bc55