2017-09-28 102 views
2

正則表達式,所有的空間相匹配,但是:正則表達式匹配除了?

  1. \sand\s
  2. \sor\s
  3. \sbut\s
  4. ,\s


輸入

字體粗細,寬度和高度,背景,或背景色,但變換式


input.replace(regex,"-")


相配

字體重量,寬度和高度,背景,或背景顏色,但變換風格


替換

字體-重量,寬度和高度,背景,或背景-顏色,但變換-風格


輸出

字體重量,寬度和高度,背景,背景顏色,但變換式

+0

更新的問題 –

+0

不幸的是,使用Javascript沒有按」不支持負面後顧,所以這可能是相當困難的。有一點需要注意:'\ s'不是「空格」的正則表達式。它是一個包含所有空白字符(空格,製表符,換行符,回車符,換頁符和垂直製表符)的字符集。如果您只想匹配''時使用'\ s',則可能會出現意想不到的行爲。 – CAustin

+0

'\ t''\ n''\ r'已經被刪除了......所以唯一剩下的就是空格。 –

回答

2

由於JavaScript不支持一下屁股,你不會覺得這將是一個正則表達式能夠像您在那裏一樣簡單地進行替換。如果你願意延長更換邏輯一點,你可以使用一個答案,如以下(改編自答案在這裏:Regex negative lookbehind not valid in JavaScript

var input = " font weight, bland food, width and height, background, or background color, but transform style, and background repeat" 
 
var regex = /\b(\s?and|\s?but|\s?or|,)?\s/g 
 
var output = input.replace(regex, function($0, $1) { 
 
    return ($1 ? $0 : "-") 
 
}); 
 
console.log(output);

+0

我會拿... –

+0

爲什麼你用'\ sand'而不是'\ sor'和'\ sbut'?嘗試更好地格式化您的*塊*'{}' –

+0

代碼中有一個錯誤...此字符串將無法正常工作字體重量或高度框陰影 –