我有一个电话号码,我希望数字07是常量,那么其余的应该是regex?
我的看上去像这样:/^\07(?([0-9]{1})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/。
实例编号: 0752 8182 12
发布于 2016-11-04 22:07:48
我建议把你的模式
/^07\(?([0-9])\)?[-. ]?([0-9]{4})[-. ]?([0-9]{3})$/您错过了第一个\之前的(,使用\07的反斜杠使regex引擎将07部分解析为一个八进制值。
模式细节
^ -字符串的开始07 - 07\(? -一个可选的( (注意,如果您不想允许像07(5) 4444 333这样的值,则需要与\)?一起删除它)([0-9]) --一个数字(如果不需要获取捕获的子文本,则可以删除(和) )。\)? -一个可选的)[-. ]? -可选的-、.或空格([0-9]{4}) -4位数(关于括号的相同说明)[-. ]? -同上([0-9]{3}) -3位数(关于括号的相同说明)$ -字符串的末端。发布于 2016-11-04 22:18:08
我清理了你的正则表达式,你不需要额外的括号,除非你在小组中做一些事情:
/^07\(?[0-9]\)?[-. ]?[0-9]{4}[-. ]?[0-9]{3}$/会与这些数字相匹配
071 1111 111
077.1151.111
071-3211-121
0711111111
07(1) 1111 111发布于 2016-11-04 22:44:02
您没有提供有效和无效数字的示例,我猜是基于您的正则表达式。试试这个:
var numbers = [
"0701234123",
"070 1234 123",
"070-1234-123",
"070.1234.123",
"07(0)1234-123",
"07(0) 1234-123",
"0070 1234 123",
"070 123 1234"
];
//var pattern = /^07\(?([0-9]{1})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
var pattern = /^07\(?\d\)?[-. ]?\d{4}[-. ]?\d{3}$/;
// /d = [0-9]
var matched = numbers.map(function (number) {
var matches = number.match( pattern );
if (matches) {
console.log(number + " valid");
} else {
console.log(number + " invalid");
}
});产出如下:
0701234123 valid
070 1234 123 valid
070-1234-123 valid
070.1234.123 valid
07(0)1234-123 valid
07(0) 1234-123 valid
0070 1234 123 invalid
070 123 1234 invalidhttps://stackoverflow.com/questions/40432306
复制相似问题