【问题标题】:JavaScript Regex French Phone NumberJavaScript 正则表达式法国电话号码
【发布时间】:2016-12-30 10:19:06
【问题描述】:

我尝试在 Javascript 中定义一个可以接受空格、点、双点和破折号等分隔符的正则表达式。我的正则表达式在没有分隔符时工作,但当我添加空格或其他分隔符时,它不起作用。

我必须准确地说:此正则表达式适用于法国电话号码(0123456789 或 01.23.45.56.78 或 01 23 45 67 89,...)。此外,此正则表达式可以接受替换第一个“0”的“+33”。

这是我的正则表达式

var regex = /^(0|\+33)[1-9]([-.: ]?[0-9]{2}){4}$/;

谁能告诉我怎么回事?

【问题讨论】:

  • 你的正则表达式matches the sample numbers you provided。请发布您的代码。
  • 出于好奇...格式有那么重要吗?是否有充分的理由要求 01.23.45.56.78 但拒绝 012.345.5678
  • 顺便说一句,常见的提示是:首先删除所有非数字,然后使用更简单的正则表达式。喜欢if (/^(0|\+33)[1-9]\d{8}$/.test(s.replace(/[^+\d]+/g, '')) { }
  • 那么,你的代码是什么?
  • 我建议关闭这个问题,因为没有提供非工作代码。

标签: javascript regex phone-number french


【解决方案1】:

感谢大家的快速解答!

正如 Wiktor Stribiżew 所说,我的正则表达式很好! (谢谢你的链接,我不知道这个网站)。

我尝试了很多东西,很抱歉回复晚了,但我发现我的错误在哪里!

我的函数是下一个(由 onblur 调用):

function verifTel(champ) {
     var regex = /^(0|\+33)[1-9]([-.: ]?[0-9]{2}){4}$/;
     if(!regex.test(champ.value)) {
         surligne(champ, true);
         return false;
     } else {
         surligne(champ, false);
         return true;
     }
 }

surligne() 是我更改输入文本颜色的函数。当我写 0123456789 时,我的文本是绿色的,但当我写 01.23.45.67.89 时,我的文本是红色的。

但我的错误不在 JavaScript 中...我的错误在这里,在我的 HTML 中:

<input id="tel" type="number" placeholder="Téléphone" required onblur="verifTel(this)">

type="number" 只接受数字和“e”字母。所以,我已将类型更改为“文本”,现在它可以工作了!

谢谢大家的回答!祝你有美好的一天!

【讨论】:

  • 您确定这应该作为答案发布吗?您将代码留给自己,没有向我们展示,因此只能自己回答您自己的问题。
  • 之前你要求我的代码,所以这只是我的代码,对这种情况很有用......所以是的,这是我这部分的最终代码。真正的问题不是我预期的正则表达式,而是你还想要什么?我之前没有发布我的输入,因为我的错误是在正则表达式上。
【解决方案2】:

只需在[-.: ] 之后添加*。通过此更改,您将支持部件之间的多个空格。

var regex = ^(0|\+33)[1-9]([-.: ]*?[0-9]{2}){4}$;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2015-11-22
    • 2019-05-30
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    • 2017-05-23
    相关资源
    最近更新 更多