javascript失败 - 正则表达式错误

时间:2010-11-10 12:35:53

标签: javascript regex replace

Hei all

我有这段代码

function prototype( str , id )
{
    var ret = str;

    ret = ret.replace( /ø/g, 'oe' );
    ret = ret.replace( /Ø/g, 'OE' );
    ret = ret.replace( /å/g, 'aa' );
    ret = ret.replace( /Å/g, 'AA' );
    ret = ret.replace( /æ/g, 'ae' );
    ret = ret.replace( /Æ/g, 'AE' );

    document.getElementById( id ).value = ret.replace(/[^a-zA-Z0-9\/\_-]/i,'_').replace(/_+/g,'_');
}

现在我的问题是,如果我使用这样的词(demo demo demo),可以将这个词改为(demo_demo demo

我使用此功能来转义网址。接下来我需要将它发送到小写,在我完成之后,我希望得到帮助:)

坦克很多。

4 个答案:

答案 0 :(得分:2)

你忘记了贪婪修饰符

/[^a-zA-Z0-9\/\_-]/i

...

/[^a-zA-Z0-9\/\_-]/ig

答案 1 :(得分:2)

如果问题是只有第一个空格被_替换,那么您需要将g选项放到正则表达式替换中。

ret.replace(/[^a-zA-Z0-9\/\_-]/gi,'_')

将字符串转换为小写使用

toLowerCase()字符串方法。

答案 2 :(得分:1)

假设您的第一个要求是替换空格,+, - 带下划线的字符,

document.getElementById( id ).value = ret.replace(/[^a-zA-Z0-9\/\_-]/ig,'_').replace(/_+/ig,'_');

其他要求是将其设为小写字符串

document.getElementById( id ).value = document.getElementById( id ).value.toLowerCase();

答案 3 :(得分:0)

我看到的主要潜在问题是首次替换(在Ø和其他斯堪的纳维亚字符上)。

你应该用unicode char表示来改变,例如这句话

ret = ret.replace( /Ø/g, 'OE' );

应该是

ret = ret.replace( /\u0153/g, 'OE' );

对于其他变音符号,只需找到像http://www.chucke.com/entities.html

这样的unicode图表