は、私は私がやりたいことは試合javascriptの正規表現で角括弧で文字列の終わりを使用するには? JSの正規表現で
その後、リテラルドット、またはリテラルクエスチョンマークや説明マーク
1空白文字かのどちらかである
[\.\?!][\s$]
を持っています、文字列の最後にある。
しかし、上記の正規表現は、リテラル$と一致しようとします。
誰でもこれを解決する方法を知っていますか?
おかげ
は、私は私がやりたいことは試合javascriptの正規表現で角括弧で文字列の終わりを使用するには? JSの正規表現で
その後、リテラルドット、またはリテラルクエスチョンマークや説明マーク
1空白文字かのどちらかである
[\.\?!][\s$]
を持っています、文字列の最後にある。
しかし、上記の正規表現は、リテラル$と一致しようとします。
誰でもこれを解決する方法を知っていますか?
おかげ
は、この正規表現を試してみてください:
[.?!](?:\s|$)
説明:
[.?!]
- 試合のいずれか.
または?
または!
文字通り(?:\s|$)
- 試合のいずれか空白または行末まず第一に、あなたは彼らcharacter class内.
と?
をエスケープする必要はありません。彼らの特別な正規表現の意味を失う。次に、$
は、ゼロ幅アサーションであり、文字クラス内では「文字列/行末」の特別な意味を失います。
列の空白/終了前に3つの文字と一致する最も効率的な方法は、非空白文字は、現在位置のすぐ右にある場合は、任意のマッチに失敗negative lookahead(?!\S)
を使用することによるものです
[.?!](?!\S)
this regex demoを参照してください。
変更することなく、(?!\S)
は次の文字を確認するために1つのステップしか必要としません。また、charはゼロ幅アサーションの一部であるため、マッチ値には追加されません。
['[??!](?:\ s | $)'](https://regex101.com/r/hfulTs/1)?あなたの正規表現では、 '[] 'の中に' $ 'を入れたので、それは文字通り一致します – Gurman
OPは' []'の中で '.'または'? 'をエスケープする必要はないことに注意してください:p –