话不多说直接上源码
function reverseStr (str) { return str.match(/[^\s]+/g).join(' '); } console.log(reverseStr("this is my way"))//this is my way实现的思路 通过正则表达式捕获所有的非空的数据存到数组中,然后通过join方法将所有的数组元素以空格连接即可取除多余的空格。match中的正则的意思是,出现一次或多次的任意一个非空格数据全局匹配
match的基本使用 可能有的人不是很懂这个match是干啥的我贴一下基本的语法和使用方式。
语法:str.match(regexp)参数:一个正则表达式对象。如果传入一个非正则表达式对象,则会隐式地使用 new RegExp(obj) 将其转换为一个 RegExp 。如果你没有给出任何参数并直接使用match() 方法 ,你将会得到一 个包含空字符串的 Array :[""] 。
返回值:
如果使用g标志,则将返回与完整正则表达式匹配的所有结果,但不会返回捕获组。如果未使用g标志,则仅返回第一个完整匹配及其相关的捕获组(Array)。 在这种情况下,返回的项目将具有如下所述的其他属性。 1、groups: 一个捕获组数组 或 undefined(如果没有定义命名捕获组)。 2、index: 匹配的结果的开始位置 3、input: 搜索的字符串. 一个Array,其内容取决于global(g)标志的存在与否,如果未找到匹配则为null。实例
var str = 'For more information, see Chapter 3.4.5.1'; var re = /see (chapter \d+(\.\d)*)/i; var found = str.match(re); console.log(found); // logs [ 'see Chapter 3.4.5.1', // 'Chapter 3.4.5.1', // '.1', // index: 22, // input: 'For more information, see Chapter 3.4.5.1' ] // 'see Chapter 3.4.5.1' 是整个匹配。 // 'Chapter 3.4.5.1' 被'(chapter \d+(\.\d)*)'捕获。 // '.1' 是被'(\.\d)'捕获的最后一个值。 // 'index' 属性(22) 是整个匹配从零开始的索引。 // 'input' 属性是被解析的原始字符串。