regex 通过正则表达式删除字符串前后的单词还是使用替换?

68de4m5k  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(161)

我想删除字符串前后的措辞(取自演示者视图中Google幻灯片的页面标题)
演示者视图-自定义标题可能包含数字或特殊字符- Google幻灯片
由于中间部分可能包含任何意外的内容,使用replace()会比regex更好吗?
我要移除:“演示者视图-“和“-谷歌幻灯片”,我希望它们总是一样的。下面的方法对我很有效:

const slidetitle = document.title.replace("Presenter view - ", "").replace("- Google Slides", "");

与regex我尝试以下,但不工作:

const slidetitle = document.title.match(/(?<=Presenter view - ).*(?<= - Google Slides)$/)[1];
gdrx4gfi

gdrx4gfi1#

类似这样的方法可以奏效:

/^[^-]+- | -[^-]+$/gm
  • ^[^-]+--捕获从行首到破折号+空格之间除破折号以外的所有内容
  • |-或
  • -[^-]+$-找到最后一个空格+破折号,并捕获除破折号以外的所有内容,直到行尾
  • gm-全局+多行修饰符
console.log(`Presenter view - Custom title may contain numbers or special characters - Google Slides`.replace(/^[^-]+- | -[^-]+$/gm, ''));

使用上述解决方案可能无法保证“演示者视图-“和“- Google幻灯片”。如果可以保证,则:

/^Presenter view - | - Google Slides$/gm

相关问题