Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从电话号码中解析区号_Javascript_Regex_String - Fatal编程技术网

Javascript 从电话号码中解析区号

Javascript 从电话号码中解析区号,javascript,regex,string,Javascript,Regex,String,我有一个电话号码列表,其格式有多种,例如:(212)-555-1234或212-555-1234或2125551234 使用JavaScript,从这些字符串中只提取区号的最佳方法是什么?Regex as'^\(*(\d{3})应该这样做。从匹配中获取第一组 这里,^将从开头开始匹配,\d{3}将匹配3个数字。\(*将匹配可选的起始括号。您不需要关心区号之后的下一个数字或符号。Regex as'^\(*(\d{3})应该这样做。从匹配中获取第一组 在这里,^将从头开始匹配,\d{3}将匹配3位数

我有一个电话号码列表,其格式有多种,例如:
(212)-555-1234
212-555-1234
2125551234

使用JavaScript,从这些字符串中只提取区号的最佳方法是什么?

Regex as
'^\(*(\d{3})
应该这样做。从匹配中获取第一组

这里,
^
将从开头开始匹配,
\d{3}
将匹配3个数字。
\(*
将匹配可选的起始括号。您不需要关心区号之后的下一个数字或符号。Regex as
'^\(*(\d{3})
应该这样做。从匹配中获取第一组


在这里,
^
将从头开始匹配,
\d{3}
将匹配3位数字。
\(*
将匹配可选的起始括号。您不需要关心区号后的下一个数字或符号。

取10位数字的前3位,或从1开始的11位数字的1后的前3位。这假设您的域是美国电话号码。

取前3位10位数字,或以1开头的11位数字中1后的前3位数字。这假定您的域是美国电话号码。

首先,删除所有非数字的内容以获得普通号码。然后,通过切片获得前三位数字:

return myString.replace(/\D/g,'').substr(0, 3);

首先,删除所有不是数字的内容以获得普通数字。然后,通过切片获得前三个数字:

return myString.replace(/\D/g,'').substr(0, 3);

获取前3个连续数字

/[0-9]{3}/.exec("(212)-555-1234")[0]
示例():


获取前3个连续数字

/[0-9]{3}/.exec("(212)-555-1234")[0]
示例():


你也可以使用我的图书馆

示例

parsePhone("12025550104");
result: { countryCode:1, areaCode:202, number:5550104, countryISOCode:"US" }

你也可以使用我的图书馆

示例

parsePhone("12025550104");
result: { countryCode:1, areaCode:202, number:5550104, countryISOCode:"US" }


需要更多关于找到电话号码的数据的上下文。每行是否有一个电话号码?电话号码是否嵌入文本中?一行上是否有多个电话号码?也许您可以包括一个原始数据的示例,您正试图从中提取区号。下面的答案回答了我的问题,I w我可以接受所有正确的:)需要更多关于找到电话号码的数据的上下文。每行是否有一个电话号码?电话号码是否嵌入文本中?一行上是否有多个电话号码?也许您可以包括一个原始数据的示例,您正试图从中提取区号。下面的答案回答了我的问题,I w我可以接受所有正确的:)这是无效的。首先,它将不匹配这些字符串的任何部分,因为使用了
\\d
而不是
\d
,并且即使修复了此问题,它也将匹配
555
123
请使用正则表达式文字,它们比正则表达式字符串更易于读取。@DeanOC使用了一个额外的转义字符来转义该字符串e char本身。我删除了它以避免混淆。您的第二部分也不正确。我从一开始就使用
^
进行匹配。语法可能没有什么问题,但概念上它只匹配前3位数字。我会使用问号而不是星号,但是的,这样就可以了。糟糕,我在测试时一定没有复制^r当用于
(212)时,此正则表达式不正确-555-1234
,因为它在匹配中包含了开头括号。这是无效的。首先,它将不匹配这些字符串的任何部分,因为它使用了
\\d
而不是
\d
,并且即使这是固定的,它也将在
555
123
上匹配。请使用正则文本,它们比重新读取更容易gex字符串。@DeanOC另一个转义字符被用来转义转义字符本身。为了避免混淆,我删除了它。你的第二部分也不正确。我从一开始就用
^
进行匹配。语法可能没有什么问题,但从概念上讲它只匹配前3位数字。我会用问号而不是星号,但答案是肯定的h、 这样就可以了。我的错,我在测试时一定没有复制“^”。但是这个正则表达式在用于
(212)时是不正确的-555-1234
因为它在匹配中包含了开头括号。这是最好的,因为如果您需要在任何时候对电话号码进行验证,这将比正则表达式更好地维护。它的可读性也更高。@FrankieTheKneeMan它使用的是正则表达式。事实上,它使用的是正则表达式和two字符串方法。到底是什么让它比正则表达式更易于维护?@canon-任何美国电话号码都可以用一系列10位数字表示。所有其他格式(空格、连字符、括号等)仅用于人类可读性。虽然使用正则表达式,但它仅用于将信息缩减到所需的最小数量。这也使代码更易于维护,因为(a)稍微易于阅读,以及(b)更具可扩展性。这是最好的,因为如果您需要在任何时候对电话号码进行验证,这将比正则表达式更好地维护。它的可读性也更高。@FrankieTheKneeMan它使用正则表达式。事实上,它使用正则表达式和两个字符串方法。到底是什么让它更易于维护任何美国电话号码都可以用一系列10位数字表示。所有其他格式(空格、连字符、括号等)仅用于人类可读性。虽然使用正则表达式,但它仅用于将信息缩减到所需的最小数量。这也使代码更易于维护,因为它(a)稍微易于阅读,并且(b)更易于扩展。或者使用/\d{3}/.exec(“(212)-555-1234”)[0]保存更多字符或者用/\d{3}/.exec(“(212)-555-1234”)[0]保存更多字符