我要删除除第一个+运算符外的所有非数字字符。
因此,+运算符应首先显示。
例如,
+ 614a24569953 => +61424569953
+61424569953+ => +61424569953
答案 0 :(得分:5)
也许
(?!^\+)[^\d\r\n]+
替换为空字符串只会做到这一点。
第一个陈述
(?!^\+)
忽略字符串开头的+
和第二个字符串,
[^\d\r\n]+
忽略字符串中的数字,换行符和回车符。
const regex = /(?!^\+)[^\d\r\n]+/g;
const str = `+614a24569953`;
const subst = ``;
const result = str.replace(regex, subst);
console.log(result);
如果您想简化/更新/探索表达式,请在regex101.com的右上角进行解释。如果您有兴趣,可以观看匹配的步骤或在this debugger link中进行修改。调试器演示了a RegEx engine如何逐步使用一些示例输入字符串并执行匹配过程的过程。
jex.im可视化正则表达式:
答案 1 :(得分:1)
尝试
t1="+614a24569953"
t2="+61424569953"
t3="6142+4569a9+53"
re = /(?<=\+.*)[^0-9]/g
console.log( t1.replace(re, '') );
console.log( t2.replace(re, '') );
console.log( t3.replace(re, '') );