我如何使用正则表达式来提取以下标记?

时间:2012-04-21 21:32:17

标签: javascript regex

例如,假设#表示如下特殊字

今天我带了#lovely去了#zoo。我们有一个美好的时光。使用RegEx可以提取类似

的内容
#lovely#zoo#wonderful

2 个答案:

答案 0 :(得分: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表示它会找到所有匹配而不仅仅是第一个匹配。

答案 1 :(得分: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:你猜对了,我不喜欢正则表达式!

相关问题