2016-05-27 9 views
0

空白や特殊文字を含まない文字列から単語全体を分割しようとしています。JavaScript単語全体の配列のみを作成する正規表現。

ので

'(votes + downvotes)/views' 

から私は以下のが、括弧といくつかの空白をキャッチしようとしたことがあり、次の

['votes', 'downvotes, 'views'] 

のような配列を作成したいと思います。 https://regex101.com/r/yX9iW8/1あなたはすべての単語文字に一致するすべての非単語文字

'(votes + downvotes)/views'.split(/\W+/g).filter(x => x !== ''); 
// ["votes", "downvotes", "views"] 

または\w+に分割する\W+を使用することができます

+0

あなたの例やそれ以外の文字列も同様ですか?数字は入力されますか?もしそうなら、それらを「言葉」として扱いたいと思いますか? – smcd

+0

数字と演算子を別のマッチでそれぞれの配列に分割します。 – shaunix

答えて

1

'(votes + downvotes)/views'.match(/\w+/g); 
// ["votes", "downvotes", "views"] 
+0

ありがとうポール、これは素晴らしい仕事。私が答えを受け入れるとすぐに私はそうするでしょう。 – shaunix

+0

さらに良いオプションは、 '.filter(x => x)' –

+0

@リチャードハミルトンはそれについて考えました。私はフィルタでそれほど快適ではないと判断しました。省略形を短くしたい場合は、 'Boolean'または' x => !! x 'のどちらかが私の方とうまく座るだろう。[2、undefined、1、' a '、'、false、null] .filter(Boolean); // [2,1、 "a"] ' –

2

あなたはとの組み合わせで正規表現として/\w+/gを使用することができますString#match

var array = '(votes + downvotes)/views'.match(/\w+/g); 
 
console.log(array);

0

それは非常に簡単です...

var matches = '(votes + downvotes)/views'.match(/[a-z]+/ig); 

あなたは、あなたの文字が単語を作るものプロジェクト、および単語の最小長さのために決定する必要があります。それは3文字の長さの数字とダッシュを持つ文字にすることができます...

[a-z0-9-]{3,} 

幸運!

関連する問題