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
)
我使用此功能来转义网址。接下来我需要将它发送到小写,在我完成之后,我希望得到帮助:)
坦克很多。
答案 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图表