フレーズの配列を持っていて、文字列にフレーズが含まれているかどうかを検出しようとしています。私は現在、次の正規表現を使用しています:JS Regex:フレーズの一致リスト(ハッシュ記号を含む)
var arrOfWords = ['foo', 'bar', 'foo bar']
var regEx = new RegExp('\\b(' + arrOfWords.join('|') + ')\\b', 'gi')
console.log(regEx)
/\b(foo|bar|foo bar)\b/gi
私はサブストリングを含めるしたくなかったので、私は\b
を使用ではなく、完全な単語/フレーズ、すなわち 「foo」が「foobarに」と一致していないはずですが、これは素晴らしい作品「私がfooが好き」
と一致する必要があります、しかし、単語の境界は、\b
、\b
は英数字で境界を起動すると、#
で始まるフレーズを無視します。
「#hashtag」は、アレイ内にある場合テストされている文字列は「ハッシュタグ」を持っているのであれば、それだけマッチします、ではない「#hashtag」
私が本当に探していると、その正規表現になりますシンボルやハッシュなど、配列に指定されたフレーズ全体と一致します。あるいは、これを回避できる解決策かもしれません。
誰でも正しい方向に向けることができますか?ありがとう。
こんにちは、これは私にとって90%ありがとうございます。ちょうどニットピックに、私は 'arrOfWords'に'#hashtag'が含まれていれば、文字列中の '## hashtag'と一致することに気付きました。ハッシュの数が正確である場合にのみマッチングの方法がありますか? –
@ /(?:^ | \ s)(foo | bar | foo bar | #hashtag)(?= $ | \ s)/ ' –
@WiktorStribiżew:あまりにも制限があるかもしれないOPだけが伝えることができます)。たとえば、Eleanorによると、「#hashtag is trending」はあなたのものとは一致しませんが、私の場合はそうです。 – Amadan