2

たとえば、次のように # が特殊な単語を表すとします。

今日は #動物園 へ #素敵な旅行 をしました。#楽しい時間を過ごさせて頂きました。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 に答える