我想用%20替换字符串中的句点,以实现Firebase密钥用途。如何在JavaScript中不使用/ g替换字符串中的所有句点?
string.replace('.', '%20')
我甚至可以做所有的人都用/g
正则表达式标志:
string.replace(/\./g, '%20')
但火力地堡规则给我一个错误:
我可以用时间做1期Error saving rules - Line 5: regular expressions do not support flags other than i
所以我需要一个表达式来替换所有的时期而不使用/g
。我可能只是连锁.replace('.', '%20')
一堆时间:
string.replace('.', '%20').replace('.', '%20').replace('.', '%20').replace('.', '%20')
但我希望有一个更好的办法。
更新:我曾试图string.split('.').join('%20')
,但火力地堡引发错误:
Type error: Function call on target that is not a function.
我猜他们在JSON规则分析器拿出split
功能。我也尝试过(function() {var s = auth.token.email; while (s.indexOf('.') != -1) { s = s.replace('.', '%20') } return s})()
。 Firebase抱怨说他们的数据库规则中不允许使用函数定义。
更新3:由于火力地堡的精彩的支持,我发现,在他们的数据库规则string.replace
功能已经取代与替换所有出现的串的,不只是一个单一的发生一个版本。所以实际string.replace('.', %2E')
完美的作品!
我发现的唯一参考是这[Github问题](https://github.com/firebase/bolt/issues/176)... – Xufox
是@Xufox这就是我正在处理的问题 –
如果你正在计划使用电子邮件地址作为密钥,有更好的选择来构建你的数据,这样就可以完全避免这种混乱。只是在说'。 – Jay