为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

郎朗坤 2023-07-29 15:55:53
我正在尝试匹配然后替换单词之间的空格。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。所以,我想尝试编写一个正则表达式来检查一个单词是否有空格并且后面跟着另一个单词,如果后面没有另一个单词,则空格将被修剪。但是,如果在空格后面跟着另一个单词,则单词之间会添加一个 +。
查看完整描述

1 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

如果要替换单词字符之间的空白字符并删除所有其他空白字符,可以使用捕获组来查看匹配的内容,并使用回调进行替换。

(?<=\w)\s+(?=\w)|(\s+)

查看正则表达式演示

let regex = /(?<=\w)\s+(?=\w)|(\s+)/g

let result = [

  "viva",

  "Viva la via"

].map(s => s.replace(regex, (m, g1) => g1 ? '' : `+`))


console.log(result);


查看完整回答
反对 回复 2023-07-29
  • 1 回答
  • 0 关注
  • 68 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信