Javascript-用于从标题中删除特殊字符的正则表达式

Javascript-用于从标题中删除特殊字符的正则表达式,javascript,regex,Javascript,Regex,我正在尝试从标题中删除特殊字符,并将其转换为url架构。我可以通过使用.replace方法来实现这一点,例如:title.replace(/[^A-Za-z0-9\-/s]/g,”) 当标题中有括号时,我遇到了问题。我可以删除括号,但它会在结尾留下一个空白,然后我用-填充空白,以创建URL架构,这给了我一些问题 我如何调整下面的代码,以删除(猫和狗)周围的括号,从而不留下空格 这就是我当前代码的现状:“宠物用品猫和狗” let title=“宠物用品(猫和狗)” 让cleanTitle=“”

我正在尝试从标题中删除特殊字符,并将其转换为url架构。我可以通过使用.replace方法来实现这一点,例如:
title.replace(/[^A-Za-z0-9\-/s]/g,”)

当标题中有括号时,我遇到了问题。我可以删除括号,但它会在结尾留下一个空白,然后我用
-
填充空白,以创建URL架构,这给了我一些问题

我如何调整下面的代码,以删除(猫和狗)周围的括号,从而不留下空格

这就是我当前代码的现状:
“宠物用品猫和狗”

let title=“宠物用品(猫和狗)”
让cleanTitle=“”
cleanTitle=标题。替换(/[^A-Za-z0-9\-/s]/g,”);
cleanTitle=cleanTitle.toLowerCase();
cleantTitle=cleantTitle.replace(新的RegExp(“,“g”),“-”;
cleantTitle=cleantTitle.replace(“-和“,”);
cleanttitle=cleanttitle.replace(新的RegExp(“--”和“g”),“--”);
cleantTitle=cleantTitle.replace(新的RegExp(“-”,“g”),“-”;

console.log(cleanttitle)
可能有更优雅的方法,但您只想删除开头和结尾的特殊字符,而不添加空格字符(或在添加空格字符后删除)。这可以通过两个额外的替换来完成:

let title=“宠物用品(猫和狗)”
让cleanTitle=“”
cleanTitle=标题。替换(/[^A-Za-z0-9\-/s]/g,”);
cleanTitle=cleanTitle.replace(/^/g,“”);
cleanTitle=cleanTitle.replace(/$/g,“”);
cleanTitle=cleanTitle.toLowerCase();
cleantTitle=cleantTitle.replace(新的RegExp(“,“g”),“-”;
cleantTitle=cleantTitle.replace(“-和“,”);
cleanttitle=cleanttitle.replace(新的RegExp(“--”和“g”),“--”);
cleantTitle=cleantTitle.replace(新的RegExp(“-”,“g”),“-”;
console.log(cleanTitle)
您可以使用

let title=“宠物用品(猫和狗)”
title=title.toLowerCase()//转到小写
.match(/[a-z0-9\s-]+/g)//提取所有alnum+连字符和空格块
.map(x=>x.trim().split(/\s+/).join(“-”)//修剪项目,用空格拆分,用连字符连接
.join(“-”//用连字符连接项目
.替换(/-和\b/g',);//删除整个单词-和

控制台日志(标题)您可以通过以下方式实现输出:

let title=“宠物用品(猫和狗)”
让cleanTitle=“”
cleanTitle=标题。替换(/和/g',);//删除所有“和”
cleanTitle=cleanTitle.replace(/\s+/g,'-');//将所有空格替换为“-”
cleanTitle=cleanTitle。替换(/([()])/g',;//删除所有“()”
cleanTitle=cleanTitle.toLowerCase();//转换为小写

console.log(cleanTitle)
您好,如果我的措辞不正确,很抱歉。我所说的
url模式
的意思是,我将在我的页面上有一个文章标题,我将重新定向,因此我尝试将任何标题转换为友好的url,例如
Pet Supplies(Cat and Dog)
website.com/Pet Supplies Cat Dog
我想你想要的是
slug
。有很多例子说明如何使用JavaScript生成这些代码,例如,您可以只
trim
字符串,
cleantTitle.toLowerCase()=>
cleanTitle.trim().toLowerCase()。另外,您的意思是将空格与
/s
匹配吗?它必须是
\s