2017-07-27 13 views
2

スタンドアローンと一致するようにしようとしていますs大文字小文字を区別しません。私はアポストロフィが前にあるものと一致させたくありません。私の現在の正規表現は/\b[s]\b/igであり、テスト文字列は2行目と3行目のSが唯一一致するはずです。JavascriptアポストロフィとマッチしないスタンドアロンSにマッチする正規表現S

Men's 
S 
Just S Things 
Somethings 

Regexr:http://regexr.com/3geo2あなたが使用することができ

+0

否定後読みですが、Javascriptがそれをサポートしていません。安価な方法は、文字列を逆にして、代わりに否定的な先読みをすることです。たとえば、[here](https://stackoverflow.com/questions/641407/javascript-negative-lookbehind-equivalent)を参照してください。 –

+0

あなたは '\ s + s \ s +' – MaxZoom

+0

を試すことができます@MaxZoom回答としてではなく回答として投稿しましたが、これは私にとってはうまくいくようです!それを答えとして投げ捨てて、適切にマークすることができます:D – yourfavorite

答えて

2

私は次の正規表現を思いついた

0あなたが必要なもの

DEMO

+0

ありがとう!これは私の目的のために素晴らしい作品です。 – yourfavorite

1

一つtrickは非キャプチャし、キャプチャ式の間で交互に使用してから、正規表現マッチのあなたの後処理では、そのドンマッチを破棄することです捕獲グループはありません。

正規表現は次のようになります。

/'s|(\bs\b)/ig 

そして、あなたは、交換作業を行うには、それを使用していた場合、それは同じように使用されます:

短い実験の後

var str = "Men's\nS\nJust S Things\nSomethings"; 
 

 
var updatedStr = str.replace(/'s|(\bs\b)/ig, 
 
    (match, captureGroup) => captureGroup ? "<S>" : match 
 
); 
 

 
console.log(updatedStr);

関連する問題