2017-07-27 114 views
2

我想匹配一個獨立的s忽略大小寫。我不想匹配前面有撇號的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不支持它。一個便宜的方法是扭轉字符串,而不是反向預覽。例如,請參閱[這裏](https://stackoverflow.com/questions/641407/javascript-negative-lookbehind-equivalent)。 –

+0

你可以嘗試'\ s + s \ s +' – MaxZoom

+0

@MaxZoom你提交作爲答覆,而不是答案,但這似乎爲我工作!把它折起來作爲答案,這樣我可以適當地標記:D – yourfavorite

回答

2

短暫實驗後我想出了以下正則表達式

(?:\s|^)s(?:\s|$) 

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);