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`字符串开头有一个空格感谢这两个错误报告。编辑修复了这两个问题。还添加了“平淡的食物”作为一个例子,说明不小心边界可能会导致问题。