2

例如假设#表示一个特殊的词如下

我今天去#zoo 进行了#lovely 之旅。我们有一个美好的时光。使用 RegEx 是否可以提取类似

#lovely#zoo#wonderful
4

2 回答 2

5

采用string.match

var str = "I took a #lovely trip to the #zoo today. We had a #wonderful time"
str.match(/#\w+/g); // #lovely,#zoo,#wonderful 

可能需要根据您的需要调整正则表达式以包含数字和符号。

/#[\w\d]+/g对于字母和数字,/#\S+/g对于任何不是空格的东西。

编辑:我会g在最后补充一点,这意味着它将找到所有匹配项,而不仅仅是第一个匹配项。

于 2012-04-21T21:35:58.640 回答
2

有正则表达式的答案。然后,就有了split答案。以下作品:

var s = 'I took a #lovely trip to the #zoo today. We had a #wonderful time.'
var tags = s.split( '#' ).map( function ( str ) {
    return str.split( ' ' )[ 0 ]
} )

// Now, tags[0] is not good, so let's splice it
tags.splice( 0, 1 )

console.log( tags ) // ['lovely', 'zoo', 'wonderful']

所以,是的,它比正则表达式解决方案更冗长。不过我觉得它更优雅。

PS:你猜对了,我不喜欢正则表达式!

于 2012-04-21T21:45:39.567 回答