我的Oracle Apex 4.2页面中有许多动态操作,其中包含操作"执行Javascript代码"在电话号码输入字段:
$s("P40_MOBILE_PHONE", $v("P40_MOBILE_PHONE").replace(/[()-\s]+/g, ''));
适用于IE和Chrome。但是,在Firefox中,它不仅无法正常工作,而且会导致页面上的所有其他动态操作完全停止工作。
这与其他动态行为之间的唯一区别似乎是使用string.replace(/[()-\s]+/g, '')
。这应该从电话号码中删除任何空格(
,)
和-
个字符。
答案 0 :(得分:3)
正如@dandavis在评论中所说,逃避破折号的工作原理(不需要逃避括号)。
如果您尝试运行代码
/[()-\s]+/
你得到了
SyntaxError: invalid range in character class
这是因为Firefox试图将短划线用作范围字符,而不是破折号。
要解决此问题,您可以:
/[()\-\s]+/
/[-()\s]+/
,/[()\s-]+/
答案 1 :(得分:0)
为了将来参考,更改正则表达式如下修复了问题:
replace(/[\(\)\-\s]+/g, '')