Javascript 爱尔兰电话号码需要正则表达式吗

Javascript 爱尔兰电话号码需要正则表达式吗,javascript,php,regex,phone-number,Javascript,Php,Regex,Phone Number,我需要验证一个爱尔兰电话号码,但我不想让它对用户太不友好,许多人习惯于在电话号码上用括号括起他们的区号,然后用5到7位数字表示他们的号码,有些人在区号或移动运营商之间加空格 爱尔兰固定电话号码的格式为1至4位的区号和5至8位的数字 e、 g 我正在寻找Javascript/PHP的正则表达式。试试这个: 修改版本(不包括区号): \d{3}\s\d{4} 这可能有用。它应该考虑电话号码中任何位置的空格的外观 preg_match('|^\s*\(?\s*\d{1,4}\s*\)?\s*[\d

我需要验证一个爱尔兰电话号码,但我不想让它对用户太不友好,许多人习惯于在电话号码上用括号括起他们的区号,然后用5到7位数字表示他们的号码,有些人在区号或移动运营商之间加空格


爱尔兰固定电话号码的格式为1至4位的区号和5至8位的数字

e、 g

我正在寻找Javascript/PHP的正则表达式。

试试这个:

修改版本(不包括区号):

\d{3}\s\d{4}

这可能有用。它应该考虑电话号码中任何位置的空格的外观

preg_match('|^\s*\(?\s*\d{1,4}\s*\)?\s*[\d\s]{5,10}\s*$|', $phone);
人们有时用空格将电话号码分成两部分

更新:如果您希望同时验证电话号码和修剪空间,您可以这样做:

if (preg_match('|^\s*(\(?\s*\d{1,4}\s*\)?\s*[\d\s]{5,10})\s*$|', $phone, $m))
{
    echo $m[1];
}

如果是我,我会去掉空格和括号,然后验证它是否在最小长度和最大长度之间。

可能值得一看这个类-它包含一个函数,可以处理各种可能的爱尔兰电话号码(带/不带区号、手机号码、手机短码等)


此外,如果您使用的是爱尔兰数据,它还有一系列附加方法,有一天可能会派上用场,用于验证从爱尔兰银行账户到驾驶执照号码的所有信息,非常值得一看

嗨,Simon,欢迎回答,我不想要国家代码,因为我正在单独处理,并且使用
/^\(0\)\s\d\s\d{3}\s\d{4}$/
似乎不像我想要的“1到4位数的区号”那样工作。不,最短的区号是两位数。此外,除以
1
开头的特殊代码外,所有区号均以
0
开头。(
1800
freephone,
1890
localcall,
1580
昂贵等等)TRiG,从技术上讲,你是对的。但在都柏林(01),有些人习惯于简单地写(1)和科克人写(21)一样,通常是因为他们在first+353 1 1234567中添加了国家代码。我不想进一步混淆这些人。干杯,太棒了。几乎完美。是否仍要修剪开头和结尾的空格?在匹配之前使用trim($phone),或者在匹配字符串的first/final\s*之后和之前放置(and),然后读取第一个匹配的字符串。我将更新我的答案。谢谢b先生,我已经在服务器端进行了修剪,我只想在客户端也进行修剪,我在jQuery中使用了$.trim,但是如果有空格,我也希望它失败。不过,再想想,这似乎有点过头了。这个答案不包括电话号码,包括国际拨号代码,如“00353 049 854 4070”。@TomHalley true,但是,这不是OP的要求之一。这是一个修改过的正则表达式:
^\s*(?:(?:00 | \+)[\d]{1,3}\s*)?\(?\s*\d{1,4}\s*)?\s*[\d\s]{5,10}\s*$
。它将同时匹配+xyz或00xyz,其中xyz是1-3位长的国家代码,因此最终它将匹配00353 049 854 4070和049 854 4070以及(049)854 4070等。。
if (preg_match('|^\s*(\(?\s*\d{1,4}\s*\)?\s*[\d\s]{5,10})\s*$|', $phone, $m))
{
    echo $m[1];
}