2017-09-28 105 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

代码中有一个错误...此字符串将无法正常工作字体重量或高度框阴影 –