繁体   English   中英

如何从汉字生成url slug?

[英]How to generate url slug from chinese characters?

通常用于生成 url slug 我使用https://github.com/jprichardson/string.js库 - 并且正是slugify方法。 但是它会删除所有中文字符。 作为一种解决方法,我使用以下功能:

var slugify = function(str){
   str = str.replace(/\s+/g,'-') // replace spaces with dashes
   str = encodeURIComponent(str) // encode (it encodes chinese characters)
   return str
}

所以对于输入中文 标题我得到%E4%B8%AD%E6%96%87-%E6%A0%87%E9%A2%98 ,它在网络浏览器 url 输入框中看起来像这样(并且它有效):

http://example.com/中文-标题

但是我还想删除任何特殊字符,如!@#$%^&*)等。问题是string.js库在内部使用以下代码:

.replace(/[^\w\s-]/g

它删除了任何特殊字符,但也删除了中文字符,因为它们与\\w regexp 不匹配......

所以我的问题是 - 如何修改上面的正则表达式以使其保留中文字符?


我试过

replace(/[^a-zA-Z0-9_\s-\u3400-\u9FBF]/g,'')

但它仍然替换了汉字...

如果要匹配(或排除)一组字符(带方括号)中的破折号-字符,则必须将其放在最后。

您的正则表达式匹配的字符不是

  • az范围内
  • AZ范围内
  • 0-9范围内
  • _
  • \\s-\㐀范围内,这是你的问题
  • -
  • \龿

你想做:

replace(/[^a-zA-Z0-9_\u3400-\u9FBF\s-]/g,'')

做一个积极的匹配列表:

  replace(/[\!@#\$%^&\*\)]/g,'')

无论如何,我会考虑从中取出 URL 元字符:

   replace(/[\!@\$\^\*\)]/g,'')

你可以试试uslug , which slugify汉语/漢語汉语漢語

如果你想把汉字转成拼音,试试音译

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM