JavaScript替换正则表达式:(
我想在输入电话号码时替换无效字符 我想要的规则如下JavaScript替换正则表达式:(,javascript,regex,Javascript,Regex,我想在输入电话号码时替换无效字符 我想要的规则如下 第一个字符可以是“+” 其余字符必须是数字0-9 这就是我已经拥有的 phoneNumber.getValue().replace(/[^0-9,+]+/g, ""); 这是可行的,但并不完全有效 但是,我可以在字符串中的任何位置使用“+” 如果这不是第一个角色,我想删除它。现在有人知道怎么做吗 谢谢 AJ做一个稍微聪明一点的正则表达式 phoneNumber.getValue().replace(/.*(?=\+)|[^0-9]/g,
- 第一个字符可以是“+”
- 其余字符必须是数字0-9
phoneNumber.getValue().replace(/[^0-9,+]+/g, "");
这是可行的,但并不完全有效
但是,我可以在字符串中的任何位置使用“+”
如果这不是第一个角色,我想删除它。现在有人知道怎么做吗
谢谢
AJ做一个稍微聪明一点的正则表达式
phoneNumber.getValue().replace(/.*(?=\+)|[^0-9]/g,'')
这种正则表达式滥用了替换中的交替从左到右工作的事实。因为+
在第一次交替中已经被前瞻“覆盖”,它实际上不会被[^0-9]
部分删除。另一个将被删除
phoneNumber.getValue().replace(/[^\+0-9]/g, '')
当使用“+1234abc+5678”作为值时,结果是“+1234+5678”而Niet the Dark Absol的正则表达式导致“+5678” 可能您必须使用子字符串将其合并以删除第二个加号。
这将非常简单。假设您不想包含逗号(即结果应该是小数位数,前面加一个可选的
+
),那么这将完成:
phoneNumber.getValue().replace(/(^\+)|\D++/g,$1');
注:
- 使用
非十进制数字字符类速记。(即\D
与:\D
相同)[^0-9]
- 利用这样一个事实,即当捕获组不参与匹配时,它仍然可以在替换字符串中被引用(替换为空字符串)
match
而不是replace
,请尝试。match(/^\+?[0-9]+$/)