Javascript 正则表达式从数组项中删除哈希元素

Javascript 正则表达式从数组项中删除哈希元素,javascript,regex,Javascript,Regex,我使用regex从如下字符串中捕获哈希标记: var words = "#hashed words and some #more #hashed words"; var tagslistarr = words.match(/#\S+/g); console.log(tagslistarr); 这将返回这样的数组 ["#hashed", "#more", "#hashed"] 问题:如何从每个数组项中删除#哈希符号? 这就是我最终想要的 ["hashed", "more", "hashed

我使用
regex
从如下字符串中捕获哈希标记:

var words = "#hashed words and some #more #hashed words";
var tagslistarr = words.match(/#\S+/g); 

console.log(tagslistarr);
这将返回这样的数组

["#hashed", "#more", "#hashed"]
问题:如何从每个数组项中删除
#
哈希符号? 这就是我最终想要的

["hashed", "more", "hashed"]

在正则表达式中使用捕获组:

words.replace(/#(\S+)/g, '$1');
编辑:

要将它们作为数组获取,请执行以下操作:

var tagslistarr = words.match(/#\S+/g);

for( var i = 0, l = tagslistarr.length; i < l; i++ ) {
  tagslistarr[ i ] = tagslistarr[ i ].substr( 1 );
}
var tagslistar=words.match(/#\S+/g);
对于(var i=0,l=tagslistar.length;i
在正则表达式中使用捕获组:

words.replace(/#(\S+)/g, '$1');
编辑:

要将它们作为数组获取,请执行以下操作:

var tagslistarr = words.match(/#\S+/g);

for( var i = 0, l = tagslistarr.length; i < l; i++ ) {
  tagslistarr[ i ] = tagslistarr[ i ].substr( 1 );
}
var tagslistar=words.match(/#\S+/g);
对于(var i=0,l=tagslistar.length;i
试试:

更好的方法是零宽度断言;不幸的是,JavaScript不支持向后看断言,只支持向前看。(顺便说一句,这里有一篇关于的博客文章。我不能说我对任何解决方案都很关心,但这本书读起来还是不错的。我当然希望lookback断言能够进入ES6。)

正如SimonR在下面的评论中指出的那样,
Array.prototype.map
在IE8及以下版本中不可用。但是,多边形填充非常容易:

if( !Array.prototype.map ) {
    Array.prototype.map = function(f) { 
        var r = []; 
        for( var i=0; i<this.length; i++ ) r[i] = f(this[i]); 
        return r; 
    }
}
if(!Array.prototype.map){
Array.prototype.map=函数(f){
var r=[];
对于(var i=0;i尝试:

更好的方法是零宽度断言;不幸的是,JavaScript不支持向后看断言,只支持向前看。(顺便说一句,这里有一篇关于的博客文章。我不能说我非常关心任何解决方案,但这本书读起来很好。我当然希望向后看断言能够进入ES6。)

正如SimonR在下面的评论中所指出的那样,
Array.prototype.map
在IE8及以下版本中不可用。但是,很容易填充:

if( !Array.prototype.map ) {
    Array.prototype.map = function(f) { 
        var r = []; 
        for( var i=0; i<this.length; i++ ) r[i] = f(this[i]); 
        return r; 
    }
}
if(!Array.prototype.map){
Array.prototype.map=函数(f){
var r=[];
对于(var i=0;i
印刷品

["hashed", "more", "hashed"]
印刷品

["hashed", "more", "hashed"]

只删除散列而不创建数组。只删除散列而不创建数组。注意,
array.map
在IE8或更低版本中不受支持:True。
array.prototype.map
于2005年11月在JavaScript 1.6中引入。因此它已经有七年多的历史了。如果您(或您的客户)如果你使用的浏览器没有实现七年前的功能,也许是时候切换了,嗯?另外,polyfill
Array.prototype.map
。原则上我完全同意你的看法,但不幸的是,在现实世界中仍然有很多人使用IE8(或更少!)。polyfill的优点是,这是我如此喜欢javascript的一个原因:)我知道……我对“现实世界”越来越失望。我越来越倾向于只提供一个页面,上面写着“你的浏览器已经过时了,请升级”适用于使用古老浏览器的用户。在某一点上,你不能继续迎合那些不升级的用户……当然,这取决于你提供的网站/服务。注意,
array.map
在IE8或更低版本中不受支持:真。
array.prototype.map
是在2005年11月在JavaScript 1.6中引入的。因此,它超过了七个岁。如果你(或你的客户)使用的浏览器没有实现七年前的功能,也许是时候切换了,嗯?另外,polyfill
Array.prototype.map
。原则上我完全同意你的看法,但不幸的是,现实世界中仍然有很多人使用IE8(或更少!)。polyfill的优点是,这是我如此喜欢javascript的一个原因:)我知道……我对“现实世界”越来越失望。我越来越倾向于只提供一个页面,上面写着“你的浏览器已经过时了,请升级”适用于使用古老浏览器的用户。在某一点上,你不能继续迎合那些不升级的用户……当然,这取决于你提供的网站/服务。