簡體   English   中英

Javascript - 從標題中刪除特殊字符的正則表達式

[英]Javascript - Regex expression to remove special characters from title

我試圖從我的標題中刪除特殊字符並將其轉換為 url-schema。 我可以通過使用 .replace 方法來完成此操作,例如: title.replace(/[^A-Za-z0-9\\-/s]/g, " ");

當標題中有括號時,我遇到了問題。 我能夠刪除括號,但它會在最后留下一個空格,然后我用-填充空格以創建 URL 模式,這給我帶來了一些問題。

如何調整下面的代碼以刪除(貓和狗)周圍的括號,以免留下空格?

這就是我當前代碼的情況: "Pet Supplies Cat and Dog "

 let title = "Pet Supplies (Cat and Dog)" let cleanTitle = "" cleanTitle = title.replace(/[^A-Za-z0-9\\-/s]/g, " "); cleanTitle = cleanTitle.toLowerCase(); cleanTitle = cleanTitle.replace(new RegExp(" ", "g"), "-"); cleanTitle = cleanTitle.replace("-and", ""); cleanTitle = cleanTitle.replace(new RegExp("---", "g"), "--"); cleanTitle = cleanTitle.replace(new RegExp("--", "g"), "-"); console.log(cleanTitle)

我的預期結果是: pet-supplies-cat-dog

您可以使用

 let title = "Pet Supplies (Cat and Dog)" title = title.toLowerCase() // Turn to lower .match(/[a-z0-9\\s-]+/g) // Extract all alnum + hyphen and whitespace chunks .map(x => x.trim().split(/\\s+/).join("-")) // Trim the items, split with whitespace and join with a hyphen .join("-") // Join the items with a hyphen .replace(/-and\\b/g, ''); // Remove whole word -and console.log(title);

可能有更優雅的方法來做到這一點,但您只想刪除開頭和結尾的特殊字符而不添加空格字符(或添加后刪除)。 這可以通過兩個額外的替換來完成:

 let title = "Pet Supplies (Cat and Dog)" let cleanTitle = "" cleanTitle = title.replace(/[^A-Za-z0-9\\-/s]/g, " "); cleanTitle = cleanTitle.replace(/^ /g, ""); cleanTitle = cleanTitle.replace(/ $/g, ""); cleanTitle = cleanTitle.toLowerCase(); cleanTitle = cleanTitle.replace(new RegExp(" ", "g"), "-"); cleanTitle = cleanTitle.replace("-and", ""); cleanTitle = cleanTitle.replace(new RegExp("---", "g"), "--"); cleanTitle = cleanTitle.replace(new RegExp("--", "g"), "-"); console.log(cleanTitle)

您可以通過以下方式實現輸出:

 let title = "Pet Supplies (Cat and Dog)" let cleanTitle = "" cleanTitle = title.replace(/and/g,''); // removing all "and" cleanTitle = cleanTitle.replace(/\\s+/g, '-'); // replacing all spaces by "-" cleanTitle = cleanTitle.replace(/([()])/g, ''); // removing all "()" cleanTitle = cleanTitle.toLowerCase(); // converting to lowercases console.log(cleanTitle)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM