繁体   English   中英

string.replace在Firefox中不起作用?

[英]string.replace not working in Firefox?

我的Oracle Apex 4.2页面中有许多动态操作,在电话号码输入字段中有“执行Javascript代码”操作:

$s("P40_MOBILE_PHONE", $v("P40_MOBILE_PHONE").replace(/[()-\s]+/g, ''));

这适用于IE和Chrome。 但是,在Firefox中,它不仅不起作用,而且会导致页面上的所有其他动态操作完全停止工作。

这个和其他动态动作之间的唯一区别似乎是使用了string.replace(/[()-\\s]+/g, '') 这应该从电话号码中删除任何空格, ()-字符。

正如@dandavis在评论中所说,逃避破折号是有效的(尽管不需要逃避括号)。

如果您尝试运行代码

/[()-\s]+/

你得到

SyntaxError: invalid range in character class

这是因为Firefox试图将短划线用作范围字符,而不是破折号。

要修复它,您可以:

  • 逃离破折号: /[()\\-\\s]+/
  • 将短划线放在开头或结尾: /[-()\\s]+//[()\\s-]+/

为了将来参考,修改正则表达式如下修复了问题:

replace(/[\(\)\-\s]+/g, '')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM