JavaScript Regex法国电话号码

8fq7wneg  于 2023-03-06  发布在  Java
关注(0)|答案(3)|浏览(163)

我试着在Javascript中定义一个正则表达式,它可以接受空格、点、双点和破折号等分隔符。我的正则表达式在没有分隔符的情况下工作,但当我添加空格或其他分隔符时,它就不工作了。
我得说清楚:这个正则表达式用于法国电话号码(0123456789或01.23.45.56.78或0123456789,...)。2同样,这个正则表达式可以接受“+33”来替换第一个“0”。
这是我的正则表达式

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

谁能告诉我出什么事了?

bn31dyow

bn31dyow1#

谢谢大家的快速回答!
所以正如Wiktor Stribiew所说,我的正则表达式很好!(谢谢你的链接,我不知道这个网站).
我已经尝试了很多事情,所以很抱歉很晚才回复,但我已经找到了我的错误在哪里!
我的函数是下一个(由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()是我用来改变输入文本颜色的函数,当我写01.23.45.67.89时,我的文本是绿色的,但是当我写01.23.45.67.89时,我的文本是红色的。
但是我的错误不在JavaScript中...我的错误在这里,在我的HTML中:

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

type="number"只接受数字和“e”字母。所以,我把类型改为“文本”,现在它可以工作了!
谢谢大家的回答!祝你有愉快的一天!

63lcw9qa

63lcw9qa2#

这是可行的:

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

解释可用here

az31mfrm

az31mfrm3#

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

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

相关问题