大家好,
我是Stackoverflow的新手,我有一个简单的问题.让我们假设我们获得了大量的HTML文件(理论上无限大).如何使用正则表达式从所有这些文件中提取电话号码列表?
解释/表达将非常感激.电话号码可以是以下任何格式:
非常感谢您的帮助并拥有一个好的帮助!
在用于电话号码验证的综合正则表达式中,接受的答案有许多注释.其中一个意见的,由@jcmcbeth,提出下面这个简单的正则表达式用来获取用户提交的电话号码的数字:
string.replace("[^\d+!x]", "")
Run Code Online (Sandbox Code Playgroud)
另一位提问者问道why the !x part?,在关于这个建议的正则表达式的评论之后,立即回答,然后在下一条评论中回答:The !x is there to keep any "x" character from getting stripped.
这对我来说很有意义,除了感叹号!.查看正则表达式中字符类的文档,我没有看到感叹号是一个特殊字符,并且在我看来它不需要在x它之前有一个特殊字符.此外,从链接问题的讨论中,我没有看到任何评论表明感叹号可能是电话号码的一部分(这可以解释它包含在否定的字符类中).
有人可以向我解释为什么会出现惊叹号吗?谢谢.
我有一个网站表格,需要输入美国电话号码以便跟进,在这种情况下这是非常必要的.我想尝试消除用户输入垃圾数据330-000-0000.我已经看到了第三方为您验证电话号码的一些选项,但是如果这是这种情况的最佳选择,那就是idk.但是,如果您已经使用过这些第三方中的一方,并且可以提出建议,这里也将非常感激.
但是我正在考虑根据一系列规则检查数字,以便尝试缩小收到的垃圾电话号码.
这会导致您能想到的任何情况都不允许用户输入他们的电话号码吗?您能想到电话号码不应包含的任何其他规则吗?还有其他想法吗?
我对PHP的经验非常有限,我真的希望有人可以帮助我.
我想要做的是清理/验证电话号码输入,以便只允许号码.
我想我需要使用,FILTER_SANITIZE_NUMBER_INT但我不知道在哪里或如何使用它.
这是我的代码:
<?php
// Replace the email address with the one that should receive the contact form inquiries.
define('TO_EMAIL', '########');
$aErrors = array();
$aResults = array();
/* Functions */
function stripslashes_if_required($sContent) {
if(get_magic_quotes_gpc()) {
return stripslashes($sContent);
} else {
return $sContent;
}
}
function get_current_url_path() {
$sPageUrl = "http://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
$count = strlen(basename($sPageUrl));
$sPagePath = substr($sPageUrl,0, -$count);
return $sPagePath;
}
function output($aErrors = array(), $aResults = array()){ // Output JSON
$bFormSent = empty($aErrors) ? true : false; …Run Code Online (Sandbox Code Playgroud) public static bool ValidatePhoneNumber(string number)
{
return Regex.Match(number, "^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$", RegexOptions.IgnoreCase).Success;
}
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的,但我得到错误说Unrecognized escape sequence.有人可以帮忙吗?需要能够拥有+44.
我试图从字符串中提取美国唯一的电话号码.
我浏览了网络/ SO但是没有找到适合我需求的合适解决方案.
说实话,我有2.5年的网络编程经验,但我在RegEX吮吸.
这里只有我写的RegEX (\d{3}+\-\d{3}+\-\d{4}+)
但它只能检测到 589-845-2889
这是我要提取的电话号码.
589-845-2889
(589)-845-2889
589.845.2889
589 845 2889
5898452889
(589) 845 2889
Run Code Online (Sandbox Code Playgroud)
请告诉我如何在单个Regex for PHP中实现这一壮举.
编辑:
如果您认为用户可以输入任何其他格式的美国号码,也请同时提及,并将其包含在RegEX中.
PS:
实际上我正试图刮掉Craiglist,用户可能已经以任何可能的格式发布了他们的电话号码.
对于北美电话号码,(999)999-9999适用于输入掩码.
但是,我找不到能够处理非北美数字的好例子.我知道数字的位数可以变化,所以除了将其限制为仅数字之外,还有一个很好的例子吗?
我有以下内容来检查电话号码是否采用以下格式(XXX)XXX-XXXX.以下代码始终返回true.不知道为什么.
Match match = Regex.Match(input, @"((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}");
// Below code always return true
if (match.Success) { ....}
Run Code Online (Sandbox Code Playgroud) 我试图用正则表达式来捕捉所有这些数字,但我找不到模式。
数字标准:
可能是在电话号码之前或之后,您有文字。
正则表达式:
\b[\+]?[(]?[0-9]{2,6}[)]?[-\s\.]?[-\s\/\.0-9]{3,15}\b
Run Code Online (Sandbox Code Playgroud)
示例电话号码:
00491234567890
+491234567890
0123-4567890
0123 4567 789
0123 456 7890
0123 45 67 789
+490123 4567 789
+490123 456 7890
+49 123 45 67 789
123 4567 789
123 456 7890
123 45 67 789
+49 1234567890
+491234567890
0049 1234567890
0049 1234 567 890
(0049)1234567890
(+49)1234567890
(0049) 1234567890
(+49) 1234567890
text text (0049) 1234567890 text text
text text (+49) 1234567890 text text
Run Code Online (Sandbox Code Playgroud)
谢谢。
我需要一个RegEx对必须符合以下格式的瑞士电话号码进行验证(使用Laravel,php框架):
+41 11 111 11 11
“ +41”部分必须完全是这种方式,而其余部分(11 111 11 11)可以是1到9之间的任何数字。
调用RegEx的函数如下所示:
$regex = "thisIsWhereINeedYourHelp";
if (preg_match($regex, $value)) {
return true;
}
return true;
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
regex ×8
phone-number ×4
php ×3
c# ×2
validation ×2
.net ×1
algorithm ×1
email ×1
filter-var ×1
forms ×1
javascript ×1
laravel-4 ×1