Javascript 匹配所有空格的正则表达式,除了?

Javascript 匹配所有空格的正则表达式,除了?,javascript,regex,Javascript,Regex,匹配所有空格的正则表达式,但: \sand\s \sor\s \sbut\s ,\s 输入 字体大小、宽度和高度、背景或背景颜色,但转换样式 input.replace(regex,“-”) 匹配 字体重量、宽度和高度、背景或背景颜色,但变换样式 更换 字体-重量、宽度和高度、背景或背景-颜色,但变换-样式 输出 字体大小、宽度和高度、背景或背景颜色,但转换样式由于JavaScript不支持look behinds,您将找不到一个正则表达式,它可以像替换一样简单地完成替换。

匹配所有空格的正则表达式,但:

  • \sand\s
  • \sor\s
  • \sbut\s
  • ,\s



  • 输入

    字体大小、宽度和高度、背景或背景颜色,但转换样式


    input.replace(regex,“-”)


    匹配

    字体
    重量、宽度和高度、背景或背景
    颜色,但变换
    样式


    更换

    字体
    -
    重量、宽度和高度、背景或背景
    -
    颜色,但变换
    -
    样式


    输出


    字体大小、宽度和高度、背景或背景颜色,但转换样式

    由于JavaScript不支持look behinds,您将找不到一个正则表达式,它可以像替换一样简单地完成替换。如果您愿意稍微扩展一下replace逻辑,可以使用如下答案(根据此处的答案改编:)

    var input=“font-weight,平淡食物,宽度和高度,背景,或背景颜色,但变换样式,并重复背景”
    var regex=/\b(\s?和|\s?但是|\s?或|,)?\s/g
    var output=input.replace(正则表达式,函数($0,$1){
    回报($1?$0:“-”)
    });
    
    控制台日志(输出)
    更新了问题不幸的是,Javascript不支持负查找,因此这可能非常困难。需要注意的是:
    \s
    不是“space”的正则表达式。它是一个包含所有空白字符(空格、制表符、换行符、回车符、换行符和垂直制表符)的字符集。如果在只想匹配``时使用
    \s
    ,可能会出现意外行为。
    \t
    \n
    \r
    已被删除…因此只剩下空格。当然,但您仍然可以使用文字空格。这就是你想要匹配的,对吗?至少你会节省空间,因为你用的是一个字符而不是两个。我只是用
    \s
    来显示有问题的空格…否则它不会显示。为什么你用
    \sand
    而不是
    \sor
    \sbut
    ?另外,请尝试更好地格式化您的块
    {}
    代码中有一个错误…此字符串不起作用`font-weight,height,box-shadow`字符串开头有一个空格感谢这两个错误报告。编辑修复了这两个问题。还添加了“平淡的食物”作为一个例子,说明不小心边界可能会导致问题。