JavaScript字符串拆分方法分隔符



对于一项任务,我试图将一个电话号码按以下格式拆分为两部分:(555)555-5555。第一个是区号,显示"555",第二个是剩余号码,显示"555-5555"。

我设法得到了几乎完美显示的答案,除了区号显示为"(555)"而不是我需要的"555"。

如何使分隔符查找括号之间的数字?

这是我当前的代码:

function splitButtonPressed()
{
   var inputString = document.getElementById( "inputField" ).value; //Input field for numbers
   var tokens1 = inputString.split( " " ); 

   document.getElementById("areaOutput").value = tokens1[0]; 
   document.getElementById("numberOutput").value = tokens1[1];
}

编辑:我已经开始工作了,谢谢大家的帮助。

如果你不必使用.split()来解决这个问题,并且你想为区号允许一堆不同的分隔符,我可能会使用正则表达式:

var phoneStr = "(123) 456-7890";
var match = phoneStr.match(/s*(?(d+)[)-s]s*(d+)[s*-](d+)/);
// areaCode = match[1];
// prefix = match[2];
// num = match[3];​

下面是一个测试应用程序,显示它可以处理一堆不同的电话号码:http://jsfiddle.net/jfriend00/L87rE/

以下是正则表达式的工作原理:

Any amount of whitespace  s*
An optional left paren    (?
A series of digits (captured for match[1])   (d+)
Any one of several delimiters a right paren, a dash or whitespace  [)-s]
Any amount of whitespace   s*
A series of digits (captured for match[2])   (d+)
Whitespace or dash as a delimiter   [s*-]
A series of digits (captured for match[3])   (d+)/

更改

document.getElementById("areaOutput").value = tokens1[0];

document.getElementById("areaOutput").value = tokens1[0].substr(1, 3);

上面的代码从tokens1[0]中获取一个子字符串,从字符串的第一个字符开始,然后获取后面的三个字符(5、5和5)。

这里有一个使用单个.split()的手机号码,它可以使用以下灵活的电话号码格式:

"(123) 456-7890",
"123-456-7890",
" (123)456-7890",
" 123 456 7890"
var phoneStr = "(123) 456-7890";
// precondition the phone number by removing parens and trimming extra whitespace
var str = phoneStr.replace(/[()]/g, " ").replace(/^s*|s*$/g, "");
// split on either a dash or whitespace
var parts = str.split(/-|s+/);
// areacode == parts[0]
// prefix == parts[1]
// num == parts[2]

此处的测试用例:http://jsfiddle.net/jfriend00/UUgXM/

为了使.split()运算生成具有不同格式的一致结果,它使用了两个.replace()运算来在.split()之前预处理输入。

这使用了一个带有.split()的正则表达式,因此单个拆分可以拆分多个内容。

我建议使用match():

document.getElementById("areaOutput").value = tokens1[0].match(/d+/);

相关内容

最新更新