当前位置: 首页 > 知识库问答 >
问题:

验证电话号码的Javascript正则表达式

唐阳飇
2023-03-14

我正在修改一个脚本。该脚本包含一个表单,允许访问者向电话号码发送短信。在表单中,我有一个文本框,用户在其中输入文本接收器的电话号码。我正在使用正则表达式验证电话号码,以防止垃圾邮件发送者,并确保用户键入正确的号码。

以下是阿富汗使用的默认电话号码:

+93785657024
+93795657024
+93700565656
+93775657024

正则表达式验证首先应该确保使用93,然后确保在93之后使用78、77、79或700(其中之一),最后是6位数。

下面是我试图修复的Javascript代码。此代码现在仅适用于937,后跟8位数字。

<script type="text/javascript">
function test (){
  var phoneRegex = new RegExp('^937\d{8}$');
  var phoneNum = document.getElementById("receiver").value;
  if(!(phoneRegex.test(phoneNum))) {
    alert("Invalid Phone Number");
    document.getElementById("receiver").focus();
  } else {
    alert("valid");
  }
}
</script>

共有3个答案

刘狐若
2023-03-14

正则表达式本身:

var phoneRegex = new RegExp('(937(?:00\\d{6}|[789]\\d{7}))');

笔记:

>

if(!(phoneRegex.test(phoneNum.replace(/\D+/g, '')))) {

如果您对代码进行了此修改,那么最好在我建议的正则表达式周围添加锚定表达式^$,以确保它只包含有效的电话号码,而不是较长的号码,如信用卡号码。

代码检查执行正则表达式测试结果的方式有问题。此代码将更好地为您工作:

<script type="text/javascript">
function test (){
  var phoneField = document.getElementById("receiver")
  var phoneNum = phoneField.value;
  if (/^(937(?:00\d{6}|[789]\d{7}))$/.test(phoneNum.replace(/\D+/g, ''))) {
  alert('valid');
  } else {
  alert('Invalid phone number');
  phoneField.focus();
  }
}
</script>
<input id="receiver" value="+93785657024" />
<input type="button" onclick="test()" value="Check this number" />

注意:我的一些代码弄混了。请忽略我的其他代码(我是说上传到那个链接的代码)。这一个工作。

芮琛
2023-03-14

我想这会适合你的情况

完全你需要11位前缀。

因此,如果77|78|79意味着后面跟着7位数,或者如果700,后面跟着6位数。

var reg = /^\+93((77|78|79)\d{7}|700\d{6})$/;
console.log(reg.test('+93705657024'));

检查这把小提琴

曾皓
2023-03-14

正则表达式验证首先应该确保使用93,然后确保在93之后使用78、77、79或700(其中之一),最后是6位数。

除非在700的情况下,否则这个答案将不起作用,因为OP指定所有前缀后面都有6位数字,而实际上只有93700后面跟着6位,其他前缀后面跟着7位数字。

/^\+93(77\d|78\d|79\d|700)\d{6}$/

应该这么做。

不过,你最初的正则表达式不需要前面的“”。

 类似资料:
  • 在注册会员时,经常需要输入电话号码,电话号码是指手机号码或者固定电话。如果输入的内容不合法,则会向用户输出提示。本实例模拟实现电话号码的验证功能,接收用户在控制台输入的电话号码,然后进行判断,并将结果输出。 在这里使用《 Java正则表达式》一节中讲到的正则表达式支持的字符来实现,步骤如下。 (1) 创建名为 Test21.java 的 Java 文件,在 main() 方法中开始编写代码。 (2

  • 我正试图建立一个全面的正则表达式来验证电话号码。理想情况下,它将处理国际格式,但它必须处理美国格式,包括以下内容: 我将用我目前的尝试来回答,但我希望有人有更好和/或更优雅的东西。

  • 我需要有关验证电话号码的正则表达式行的帮助,它如下所示: 这些是它验证的格式: 我想验证如下数字: +263 772 485 384 773456284 0773456284 大部分是国际号码

  • 问题内容: 该字符串不应包含SSN或电话号码。下面的正则表达式不起作用,它仅接受xxxxxxxxx格式。 不应包含或或。 问题答案: 您可以尝试: 解释一下,如果我们阅读了您提供的查询: 我们可以读到:( 在我的顶部版本中,我改写为:。)。 保证世界上任何字符串都不匹配其中至少两个,因此它们的组合始终为真,从而为您提供了一个简单得多的有效正则表达式: 是零宽度的断言,因此它不消耗任何东西。即使匹配

  • 本文向大家介绍Java使用正则表达式验证手机号和电话号码的方法,包括了Java使用正则表达式验证手机号和电话号码的方法的使用技巧和注意事项,需要的朋友参考一下 一个朋友需要,所以写了这两个,话不多说,看代码 中国电信号段 133、149、153、173、177、180、181、189、199 中国联通号段 130、131、132、145、155、156、166、175、176、185、186 中国

  • 本文向大家介绍最新手机号码、电话号码正则表达式,包括了最新手机号码、电话号码正则表达式的使用技巧和注意事项,需要的朋友参考一下 今天开始小编为大家系统整理关于正则表达式的一系列文章,希望大家会喜欢。 首先了解一下正则表达式的概念,正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等