Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要正则表达式修复电话号码_Javascript_Regex - Fatal编程技术网

Javascript 需要正则表达式修复电话号码

Javascript 需要正则表达式修复电话号码,javascript,regex,Javascript,Regex,我有允许这些格式的正则表达式 正则表达式: /^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/ 格式: (123) 456-7890 123-456-7890 123.456.7890 1234567890 我想让它允许7位数或7位数以上。目前,它允许10位数字不小于或大于该数字。 请帮忙 不要为这样复杂的电话号码而烦恼-如果你只是想检查,为什么不按照简单的方法替换任何不是数字的号码,然后检查字符串的长度

我有允许这些格式的正则表达式

正则表达式:

/^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/
格式:

(123) 456-7890
123-456-7890
123.456.7890
1234567890
我想让它允许7位数或7位数以上。目前,它允许10位数字不小于或大于该数字。
请帮忙

不要为这样复杂的电话号码而烦恼-如果你只是想检查,为什么不按照简单的方法替换任何不是数字的号码,然后检查字符串的长度

var telephoneNumber = '(123) 456-7890';

telephoneNumber = telephoneNumber.replace(/[^\d]+/g, '');
if (telephoneNumber.length >= 7) {
    console.log('Everything is OK! The number is: ' + telephoneNumber);
    //Everything is OK! The number is: 1234567890
} else {
    console.log('Something went wrong!');
}
这也将匹配123-abc-456-7890,但会正确地“理解它”。

尝试以下方法:

^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{1,5}$

它将检查您是否至少有7个数字(最多11个)。您希望允许多少号码?

没有正则表达式可以匹配多个国家/地区的电话号码,这听起来像是您需要的。相信我,我已经试过了

如上所述,只需允许用户输入任何内容,并在将其保存到数据库之前删除任何不是数字的内容。这样,当你在两年内重新设计你的应用程序时,设计师说“我想要小数而不是破折号”,你就不必去修改数据库了——你只需要调整你的表示层

不过,像这样的东西可能适合你:

/^(?:[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}|[0-9]{3}[-\s\.]{0,1}[0-9]{4})$/
符合以下条件:

1234567
1234567
123.4567
123-1234
1234567890
1234567890
123.456.7890
123-456-7890

……但不是这个:


(123)1234

我不想允许a-z,没有空格就可以了。我可以输入7位数或更多。最重要的是,我需要一个正则表达式,而不是函数。@user2866746
if(telephoneNumber.replace(/[^\d]+/g',).length>=7)
不是函数-只有一行-可以工作。实际上,我使用的是jQuery live validation插件,它只接受匹配的模式。这就是为什么我坚持使用正则表达式的原因。@user2866746从技术上讲,如果这个规则可以的话,你可以用一些像
^(.*\d){7,}.*.*$
:或者,如果它最多是10位:
^(.*\d){7,10}.$
这样愚蠢的东西。你在英国,法国。。。。但我想这是美国的问题,因为世界其他地区并不重要