[英]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.