これは私が持っている正規表現です:だからシナリオはmodSearchStringが文字/単語の文字列が含まれていることです正規表現:ワード境界にあるプラス記号を追加
new RegExp("\\b" + synonym.toLowerCase() + "\\b", "g").test(modSearchString.toLowerCase())
。 modSearchStringに同義語が含まれているかどうか、そしてそれが何かをするかどうかを調べています。今、それは本当にうまくいっています。ただし、シノニムにプラス記号が含まれている場合は機能しないようです。これらの同義語のほとんどにプラス記号はありませんが、いくつかの可能性があります。プラス記号もどうやって説明できますか?
EDIT
modSearchStringでフレーズは、渡された同義語で、正確に一致するように、私はそれをしたいです。したがって、シノニムが "ThisPass +"で、modSearchstring = 'Test for ThisPass++"
の場合、それは失敗するはずです。ただし、modSearchstring = 'Test for ThisPass+"
の場合は合格になります。 シノニムが "ThisPass"の場合は、同じことが必要です。 modSearchstring = 'Test for ThisPass"
の場合は合格し、modSearchstring = 'Test for ThisPass+"
の場合は失敗します。
最初の正規表現は、検索文字列にその同義語が含まれているとうまく機能しています。しかし、それは単語の文字であれば動作します。シノニムには+記号が含まれている可能性があるため、おそらくうまく機能しません。
あなたはプラス記号をエスケープする必要があります。ここではトップの答えをチェックしてください:http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript – dan08
'+' is単語の文字ではないので、その前に文字/数字/アンダースコアがあれば '\ b \ +'と一致しますが、スペースやカンマなどは存在しません。開始時にプラス記号がある場合は '\ B \ +'、最後にプラス記号がある場合は '\ + \ B'をチェックしたいかもしれません。 –
「同義語」が終わるかプラス記号で始まる場合は、単語境界を使用することはできません。 '(?:^ | \ W)'と '(?:$ | \ W)'を使用してください。 –