does/doesn 不以 + 开头的联系电话的正则表达式
Regex for contact number that does/doesn't start with a +
我尝试创建一个基本的南非联系电话号码正则表达式。虽然它不起作用。规则很简单。
10 位数字或
如果以 +
开头,则为 11 位数字
例子:
0119879874
0731231234
+27731231234
+27123456789
只能匹配数字和长度。
我的尝试:[+\d]\d{9}\d{0,2}
我在网站 https://regex101.com/ 上进行了测试,它看起来很有效,但当我使用 /[+\d]\d{9}\d{0,2}/.test('12345gjhf6789123456'))
对其进行测试时却没有,然后我得到了一个真实的值。
您应该指定 ^
- 字符串的开头和结尾 $
和
/^(\+\d)?\d{10}$/.test('12345gjhf6789123456'))
与其使用不会提供任何错误消息且难以阅读(和维护)的正则表达式,不如使用一个简单的验证函数来明确列出规则:
function validate(num) {
if (num[0] === '+') {
return num.length === 11;
} else {
return num.length === 10;
}
}
这有几个优点,包括:
- 比正则表达式更快
- 以后评论和扩展更容易
- 可以替换为完整的谓词库或规则数组
我尝试创建一个基本的南非联系电话号码正则表达式。虽然它不起作用。规则很简单。
10 位数字或 如果以 +
开头,则为 11 位数字例子: 0119879874 0731231234 +27731231234 +27123456789
只能匹配数字和长度。
我的尝试:[+\d]\d{9}\d{0,2}
我在网站 https://regex101.com/ 上进行了测试,它看起来很有效,但当我使用 /[+\d]\d{9}\d{0,2}/.test('12345gjhf6789123456'))
对其进行测试时却没有,然后我得到了一个真实的值。
您应该指定 ^
- 字符串的开头和结尾 $
和
/^(\+\d)?\d{10}$/.test('12345gjhf6789123456'))
与其使用不会提供任何错误消息且难以阅读(和维护)的正则表达式,不如使用一个简单的验证函数来明确列出规则:
function validate(num) {
if (num[0] === '+') {
return num.length === 11;
} else {
return num.length === 10;
}
}
这有几个优点,包括:
- 比正则表达式更快
- 以后评论和扩展更容易
- 可以替换为完整的谓词库或规则数组