2014-09-28 3 views
0

Have PHP РегВырJavascript регулярное выражение только буквы и цифры и тире UTF8

$string = preg_replace("/[^\p{L}|\p{N}]+/u", " ", $string); 
$string = str_replace(' ', '-', $string); 

Помогите мне написать его на JS, необходимо преобразовать

jbgsbg5%[email protected]%^&*j-y&u-САМОЛЁТ~ ~2><%27;[]~!6456 

в

jbgsbg5-E-th-t65-tw45-j-y-u-САМОЛЁТ-2-6456 

Спасибо!

+1

_RegEx_ в _JavaScript_ не поддерживает классы Юникода такие как '\ p {L}'; вы должны написать их longhand –

ответ

0

только буквы, цифры и тире UTF8 JS

link = link.replace(/[^\u00BF-\u1FFF\u2C00-\uD7FF\w]+|[\_]+/ig, '-'); 
+0

Нет необходимости чередования '| [\ _] +', underscore уже включен в '\ w'. – Toto

0

Вы можете просто удалить все небукв, не-номер и без тира с [^a-z0-9\- ... ЛЁ ... ]:

var foo = 'jbgsbg5%[email protected]%^&*j-y&u-САМОЛЁТ~ ~2><%27;[]~!6456'; 

foo 
    .replace(/\s+/g, "") // remove whitespaces 
     .replace(/[^a-zA-Z0-9\- ... ЛЁ ... ]/ig, "") // remove non-letters, non-numbers and non-dash characters 
      .replace(/\-+/g, '-'); // replace multiple `-` character with single `-` 

Где... ЛЁ ... для всех ваших римских букв.

0

Вы можете попробовать с этим регулярным выражением в вашем JavaScript:

[\u00BF-\u1FFF\u2C00-\uD7FF\w\-]+ 

http://regex101.com/r/pE0eL8/1

+0

Не могли бы вы написать полный javascript с переменными, пожалуйста, это работа, но не могу понять, как писать на js –

+0

Спасибо человеку! Я немного меняю ваш код, и он отлично работает! –

Смежные вопросы