Обычно для генерации url slug я использую библиотеку https://github.com/jprichardson/string.js - и точно slugify
метод. Однако он удаляет все китайские символы. В качестве обходного пути я использую следующие функции:Как сгенерировать URL-адрес из китайских символов?
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/中文-标题
Однако я хочу также удалить любые специальные символы, такие как [email protected]#$%^&*)
и т.д. проблема заключается в том, что string.js
библиотека использует следующий фрагмент кода внутренне:
.replace(/[^\w\s-]/g
И это удаляет любые специальные символы, но и удаляет китайские символы, как они не совпадают с регулярным выражением \w
...
Так что мой вопрос - как изменить выше регулярное выражение так сделать его держать китайские иероглифы?
Я попытался
replace(/[^a-zA-Z0-9_\s-\u3400-\u9FBF]/g,'')
Но он по-прежнему заменяет китайские иероглифы ...
Спасибо это работает сейчас :) – user606521