使用正则表达式和javascript验证美国电话号码,并使用php提交
Validate US Phone Number with regex and javascript and submit with php
我想使用 Javascript 中的正则表达式验证一个 10 位数的美国式电话号码,然后通过 url 将其提交给 PHP 服务器。 它将是一个简单的文本框,用于输入数字和提交按钮的表单。
例如,验证后,网址可能是:
thisdomainname.com/resultspage.php?phonenumber=4392931234
我知道正则表达式是如何工作的,但对更复杂的表达式感到困惑。 我已经在stackoverflow和互联网上搜索了一个解决方案,并找到了几个,但没有一个完全适合我需要和/或在我运行时工作。
我需要它省略所有非数字字符(例如参数、破折号和句点),并省略在美国 10 位电话号码中可选的额外前导"1"。
它应允许(验证正确)以下格式:
1-(805) xxx-xxxx
215.xxx.xxxx
但拒绝无效:
-
805 931 42
-
805 931 42ab
-
105 931 4288
理想情况下,它将根据"北美编号计划"允许电话号码,该计划具有以下规则:
"区号以 2-9 的数字开头,后跟 0-8,然后是任何第三位数字。 第二组三位数字,称为中央局或交换代码,以 2-9 的数字开头,后跟任意两位数字。 最后四位数字,称为车站代码,没有限制。
我在下面找到了一个正则表达式来实现这一点,但我无法让它与可选的前导"1"数字一起使用。
^'(?([2-9][0-8][0-9])')?[-. ]?([2-9][0-9]{2})[-. ]?([0-9]{4})$
就像我说的,我找到了许多解决此问题的解决方案,但没有一种解决方案适用于我上面概述的所有情况。
提前谢谢。
方法是删除所有非数字字符并确保位数有效
function isValidPhoneNumber(value) {
if (!value) return false;
var count = value.replace(/[^0-9]/g, "").length;
return count == 10 || count == 11;
}
同意 Robert Byrne 在测试之前从输入字符串中删除所有非数字字符。 进一步测试您所说的有关可接受数字的其他规则:
<?php
$testStr = "134dusrtu56sdjhsdf7890asd 01"; // input string
$parsedResult = preg_replace( '/[^'d]/', '', $testStr ); // remove non-numeric characters
$confirmation = ( preg_match( '/^[1]?[2-9][0-8][0-9][2-9]['d]{6}$/', $parsedResult ) === 1 ); // parsed numeric string meets your rules?
echo $parsedResult . ": " . (int) $confirmation; // 13456789001: 1 (1=true;0=false)
另外,请注意:切勿将电话号码转换为整数 - 可能会发生溢出。 此外,存储解析的号码而不是客户端的原始输入是完全可以的,特别是如果您将号码与自动文本或拨号服务一起使用。
- 使用加号按钮添加多个文本框,并通过PHP提交
- 浏览器在用PHP提交表单时不断刷新
- 阻止使用 JavaScript 和 PHP 提交表单
- 获取所有输入字段并保留文本字段中的值,即使在使用 javascript 和 php 提交按钮后也是如此
- 当表单目标被遮挡时,如何使用 PHP 提交表单
- 使用php提交表单,并使用ajax向用户提供响应
- 使用 Java 脚本或 PHP 提交后保留输入框的最后一个值
- 使用 jQuery 或 Javascript 或 PHP 提交表单
- AJAX 以 JSON 格式向 PHP 提交数据
- Ajax向php提交按钮点击,然后提交到串行设备
- 通过curl和PHP提交JavaScript点击
- 仅使用PHP提交表单?没有JavaScript
- 使用正则表达式和javascript验证美国电话号码,并使用php提交
- 我如何使用javascript进行验证,然后使用php提交数据
- 动态php提交
- 仅当Javascript为true时执行PHP提交按钮
- 使用PHP提交表单
- php提交javascript表单
- 使用jquery和php提交按钮问题
- 使用php提交表单