问题标签 [phone-number]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1348 浏览

internationalization - 格式化电话号码

我们的客户经常填写“不正确”的格式电话号码。有谁知道是否有任何库或标准可以将数字转换为更国际化的风格?

这是一个瑞典的例子,但我们在全球都有客户,我不知道要为每个人手动处理实现。

输入经常是这样的:0555 11122

想要的结果是这样的:+46(0)555-11122

我可以自己进行格式化,但不同的国家/地区有不同的变体和系统,因此 C/Java/C# 库或处理此问题的标准方法会很棒。

0 投票
6 回答
66554 浏览

android - Android:从电话号码中检索联系人姓名

我想检索与传入电话号码关联的联系人姓名。当我处理带有来电者姓名的字符串的 broascastreceiver 中的来电号码时,将对我的项目有很大帮助。

我认为这涉及使用 sql WHERE 子句作为过滤器的查询,但是我需要对联系人进行排序吗?一个例子或提示会有很大帮助。

0 投票
2 回答
4777 浏览

android - 安卓联系人查询

我在查询电话簿联系人时遇到问题。我需要做的是获取同时输入了电话和电子邮件或属于特定类型的联系人列表。

基本上是这样的:

现在,问题是,在我的查询中使用RawContacts.ACCOUNT_TYPE它不存在。ContactsContract.Contacts.CONTENT_URI我猜我需要加入另一张桌子,但不知道该怎么做。

任何人都可以在这里帮助我吗?

0 投票
1 回答
2443 浏览

ios - 在 iPhone 上处理国际电话号码

我有一个应用程序,它通过以下方式使用联系人数据:

  1. 从客户端发送 SMS
  2. 从我们的服务器发送短信
  3. 将用户的电话号码上传到其他人可以匹配的数据库

这在美国运作良好,但国际化有一系列问题。这些是我使它工作的假设:

#1 - 从客户端发送短信很简单。逐字使用地址簿中的数字(不进行规范化)并让操作系统弄清楚。如果他们可以通过给定号码拨打电话,他们可能会发送短信(对吗?)

#2/#3 - 从服务器发送 SMS 更复杂。大多数 SMS API 需要国际符号(“+”前缀和国家代码),而用户将在他们的联系人列表中拥有各种带有各种前缀(区号、国家代码等)的各种本地和全球电话号码。所以这里需要标准化。在数据库中匹配用户的电话号码也需要规范化。

为了规范电话号码,我必须首先确定用户是否打算通过查找“+”、“011”和“00”前缀来指定一个全局号码。如果是这样,我删除前缀,将其替换为“+”并使用该数字。

如果我认为该号码是本地号码,我可以尝试自己添加国家代码(启发式,不可靠)。这需要知道用户的默认国家代码。在 iPhone 上,我可以获得用户的首选区域(可选)以及用户的 MCC 和 MNC(取决于位置?)。我倾向于用户选择的国家/地区代码,因为他们的大多数本地电话号码都属于该国家/地区。

我相信这是我能做的最好的事情,而无需解析整个数字并找出区号和其他组件。我假设大多数国家都允许“0”作为他们自己国家代码的前缀。

有道理?有没有更简单/更理智的方法来做到这一点?

0 投票
3 回答
3926 浏览

python - 如何检查用户输入的电话号码是否包含国家代码?

是否有一种简单的方法可以检查用户输入的电话号码是否包含国家代码并验证该号码是否正确?我不使用任何特定格式,数字本身必须只有数字,没有 ('s、-'s 等。这样的验证是否可以在不询问用户国家的情况下进行?诀窍是我想与所有全世界的数字。

我想它不能用正则表达式来完成(谷歌搜索了一下,发现了很多东西,但不是为了这个问题)。有没有图书馆?我正在使用python。

或者也许强制执行格式更有意义,例如 X-YYYYYYYY... 其中 X 将是国家代码,或类似的东西?

0 投票
3 回答
2374 浏览

python - 用于修复澳大利亚/新西兰电话号码的 Python 正则表达式

我有一个 Python 脚本,我们用它来解析 CSV 文件,其中包含用户输入的电话号码 - 因此,有很多奇怪的格式/错误。我们需要将这些数字解析为单独的组件,并修复一些常见的输入错误。

我们的电话号码适用于悉尼或墨尔本(澳大利亚)或奥克兰(新西兰),以国际格式提供。

我们的标准悉尼号码如下所示:

我们有国际前缀+61,后跟括号中的一位数字区号,2,后跟本地组件的两半,用连字符分隔,8328-1972

墨尔本号码在区号中只有 3 而不是 2,例如

奥克兰号码相似,但它们有一个 7 位数的本地组件(3 个然后 4 个号码),而不是正常的 8 位数。

我们也有一些常见错误的匹配项。我已经将正则表达式分离到它们自己的类中。

我们有一个用于standard_format 数字,然后其他用于各种常见错误情况,例如在区号之前添加一个额外的零(02而不是2), or missing hyphens in the local component (e.g.83281972 instead of8328-1972`)等。

然后我们从级联的 if/elifs 中调用它们:

我的目标是使匹配尽可能紧密,但至少仍能捕捉到常见错误。

不过,我在上面所做的事情有很多问题:

  1. \d{3,4}用来匹配本地组件的前半部分。然而,理想情况下,如果它是新西兰号码(即以 开头) ,我们真的只想捕捉前半部分的 3 位数+64(9)。这样,我们可以标记缺少数字的悉尼/墨尔本号码。我可以将 auckland_number 分离成它自己的正则表达式模式PhoneNumberFormats,但是,这意味着它不会捕获结合错误情况(extra_zero、missing_hyphen、space_instead_of_hyphen)的新西兰数字。因此,除非我仅为奥克兰重新创建它们的版本,例如 auckland_extra_zero,这似乎毫无意义地重复,否则我看不出如何轻松解决这个问题。
  2. 我们不会拾取错误的组合——例如,如果它们有一个额外的零和一个缺失的连字符,我们将不会拾取它。有没有一种简单的方法可以使用正则表达式来做到这一点,而无需明确创建不同错误的排列?

我想解决以上两个问题,并希望稍微收紧一点,以抓住我错过的任何东西。有没有更聪明的方法来做我上面试图做的事情?

干杯,维克多

补充评论:

以下只是提供一些上下文:

此脚本适用于一家全球性公司,在悉尼设有办事处,在墨尔本设有办事处,在奥克兰设有办事处。

这些数字来自员工的内部活动目录列表(即,它不是客户列表,而是我们自己的办公电话)。

因此,我们不是在寻找通用的澳大利亚电话号码匹配脚本,而是在寻找用于解析来自三个特定办公室的号码的通用脚本。一般来说,只有最后 4 个数字应该不同。

不需要手机。

该脚本旨在解析 Active Directory 的 CSV 转储,并将数字重新格式化为另一个程序可接受的格式 (QuickComm)

该程序来自外部供应商,并且需要我在上面的代码中生成的确切格式的数字 - 这就是为什么数字像 0283433422 一样被吐出。

我编写的脚本无法更改记录,它仅适用于它们的 CSV 转储 - 记录存储在 Active Directory 中,访问它们以修复它们的唯一方法是向员工发送电子邮件并询问他们登录并更改自己的记录。

所以这个脚本由一个 PA 运行,以产生这个程序所需的输出。她/他还将获得一份数字格式错误的人员列表 - 因此会收到有关要求用户进行补救的消息。理论上,这些应该只有少数。然后我们给这些员工发电子邮件/打电话,要求他们修复他们的记录 - 脚本每月运行一次(数字可能会改变),我们还需要标记那些设法输入错误记录的新员工。

@John Macklin:您是否建议我废弃正则表达式,然后尝试从字符串中提取特定位置的数字?

我一直在寻找一种方法来捕捉常见的错误情况,组合(例如空格而不是连字符,再加上一个额外的零),但这不是很容易实现吗?

0 投票
2 回答
701 浏览

ios - 将 UITextField 设置为电话号码

知道为什么这不起作用吗?

UIText 字段编号只是改变了以往的情况。

0 投票
4 回答
2739 浏览

php - 使用 PHP 快速检查输入文本中的电话号码格式?

从表单输入文本中快速检查电话号码格式的最有效方法是什么?

0 投票
6 回答
90290 浏览

standards - 国际电话号码的最大值和最小值?

国际电话号码的最大和最小位数是多少?(国家代码+区号+电话号码)

0 投票
5 回答
15060 浏览

php - 使用 php/regex 验证美国电话号码

编辑: 我混合并修改了下面给出的两个答案,以形成完整的功能,现在可以满足我想要的功能,然后是一些......所以我想我会把它贴在这里,以防其他人来寻找同样的东西事物。