【问题标题】:Regex that matches all spaces except?匹配所有空格的正则表达式除了?
【发布时间】:2017-09-28 03:27:21
【问题描述】:

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

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


输入

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


input.replace(regex,"-")


匹配项

fontweight, width and height, background, or backgroundcolor, 但是transformstyle


替换

font-weight, width and height, background, or background-color, 但是transform-style


输出

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

【问题讨论】:

  • 更新问题
  • 不幸的是,Javascript 不支持负向回溯,因此这可能非常困难。需要注意的一件事是:\s 不是“空格”的正则表达式。它是一个包含所有空白字符(空格、制表符、换行符、回车、换页和垂直制表符)的字符集。如果您只想匹配 ` ` 时使用 \s,可能会出现意外行为。
  • \t \n \r 已经被删除了……所以只剩下空格了。
  • 当然可以,但您仍然可以只使用文字空间。这就是你想要匹配的,对吧?至少您会节省空间,因为您使用的是一个字符而不是两个字符。
  • 我只是用\s 来显示有问题的空间……否则它不会显示出来。

标签: javascript regex


【解决方案1】:

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

【讨论】:

  • 为什么你使用\sand而不是\sor\sbut?也尝试更好地格式化你的 blocks {}
  • 代码中有一个错误......这个字符串不起作用`字体粗细,或高度,框阴影`
  • 字符串开头有空格
  • 感谢两个错误报告。编辑修复两者。还添加了“清淡的食物”作为不小心边界可能导致问题的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
相关资源
最近更新 更多