猿问

正则表达式:仅在后面跟有任何字符时替换空格,否则修剪

我正在尝试匹配然后替换单词之间的空格。

https://regex101.com/r/edlsbU/1/

尝试过:([a-z].)(\s+) 但是,无法正常工作。

尝试过:\w+\s\w.*

尝试过:\w+(\s)(?=\w)<--有条件。

编辑: ^\s*(?=[a-zA-Z0-9'/\\&.-])([a-zA-Z0-9'/\\&.\s-]{3,})(?<=\S)[ \s]*$

但是,不修剪。

预期的:

  • viva后面跟着一个空格,将其修剪掉。

  • viva la后跟一个空格和一个新字符,将空格替换为+

我试图为搜索引擎参数准备文本,并意识到当您执行搜索查询时:?q=,您确实将单词传递为:?q=word+word+word。所以,我想尝试编写一个正则表达式来检查一个单词是否有空格并且后面跟着另一个单词,如果后面没有另一个单词,则空格将被修剪。但是,如果在空格后面跟着另一个单词,则单词之间会添加一个 +。


郎朗坤
浏览 104回答 1
1回答

浮云间

如果要替换单词字符之间的空白字符并删除所有其他空白字符,可以使用捕获组来查看匹配的内容,并使用回调进行替换。(?<=\w)\s+(?=\w)|(\s+)查看正则表达式演示let regex = /(?<=\w)\s+(?=\w)|(\s+)/glet result = [&nbsp; "viva",&nbsp; "Viva la via"].map(s => s.replace(regex, (m, g1) => g1 ? '' : `+`))console.log(result);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答