Javascript正则表达式只有字母和数字以及破折号UTF8

时间:2014-09-28 12:04:27

标签: javascript php regex utf-8

有php regEx

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

帮我写一下js,需要转换

jbgsbg5%E-th-t65?tw45@%^&*j-y&u-САМОЛЁТ~   ~2><%27;[]~!6456

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

谢谢!

3 个答案:

答案 0 :(得分:0)

您可以使用[^a-z0-9\- ... ЛЁ ... ]删除所有非字母,非数字和非短划线:

var foo = 'jbgsbg5%E-th-t65?tw45@%^&*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 `-`

... ЛЁ ...适用于所有罗马字母。

答案 1 :(得分:0)

您可以在javascript中尝试使用此正则表达式:

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

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

答案 2 :(得分:0)

只有字母,数字和短划线UTF8 JS

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