Javascript-用正则表达式替换字符串以格式化数字
我想用一个正则表达式来创建一个标准的英国手机号码。从我在数据集中看到的情况来看,这些数字有以下不同的格式Javascript-用正则表达式替换字符串以格式化数字,javascript,regex,Javascript,Regex,我想用一个正则表达式来创建一个标准的英国手机号码。从我在数据集中看到的情况来看,这些数字有以下不同的格式 +44 (0) 7111111111 +44 71111111111 44 71111111111 07111111111 NULL 我想做的是让他们都以07开头,然后是9个数字,例如 07111111111 所以我要做的第一件事就是删除所有空格 var origmob = "+44 (0) 1111111111"; newmOB = origmob.replace(/\s/g, "")
+44 (0) 7111111111
+44 71111111111
44 71111111111
07111111111
NULL
我想做的是让他们都以07开头,然后是9个数字,例如
07111111111
所以我要做的第一件事就是删除所有空格
var origmob = "+44 (0) 1111111111";
newmOB = origmob.replace(/\s/g, "");
console.log(newmOB);
接下来,我需要以某种方式匹配
+44(0)
OR
+44
OR
44
OR
0 //This one is correct, not sure if I need to check this
这就是我觉得我有点卡住的地方。现在我有这个
var origmob = "+44 (0) 1111111111";
newmOB = origmob.replace(/ /g, "").replace(/^(\+44\(0\)|(\+44)|(44))/g, "0");
console.log(newmOB);
它有时会起作用,但我觉得不是很好。它不会以07开头字符串,也不会检查其后的长度。它也不会将NULL替换为空字符串
我如何改进regex和replace的混合,将不同的数字格式化为我所追求的标准格式
谢谢您最好在一个单独且非常直接的替换中检查
NULL
。对于所有其他情况,这里有一种可能的方法:
/(\+?\s*44\s*(?:\(?0\)?)?\s*)(?=7\d{9})/
。匹配的是更换的零件:
- 可选的+
- 任意数量的空格
- 44
- 任意数量的空格
- 可选组:
((?0)?
表示该字符在此组中是可选的)?
- 同样,任意数量的空白
var str = '+44 (0) 7111111111';
var repl = '0' + str.replace(/\D+/g, '').slice(-10);
//=> "07111111111"
因此,我们正在做的是:
0
07
然后是正则表达式中匹配的9位数字
演示:您只需获取最后9个数字并将其附加到
07
:
newmOB = origmob.replace(/.*(\d{9})$/g, "07$1");
在NULL
的情况下,可以使用单独的条件来完成
看 就我个人而言,我不会试图把所有东西都弄成一个正则表达式。这些东西很快就会变得笨重。至少,我会将
NULL
检查作为一个单独的案例。谢谢,我从来没有想过这一点:-)我将此标记为正确,因为我认为这是最好的方法。谢谢
07\1
newmOB = origmob.replace(/.*(\d{9})$/g, "07$1");