我目前正在使用以下正则表达式来匹配电话号码
'\\([1-9]{3}\\)\\s{1}[0-9]{3}-[0-9]{4}'
但是上面的模式在前3位数字中不允许0,当我将其修改为
时'\\([0-9]{3}\\)\\s{1}[0-9]{3}-[0-9]{4}'
它接受0作为第一个数字。我想生成一个正则表达式,它不接受第一个数字的0,但接受其余的数字。
我修改了我认为适合我需要的正则表达式,但我不完全确定(从未做过正则表达式)并且不知道如何在regex101上测试它
'\\([1-9]{1}[0-9]{2}\\)\\s{1}[0-9]{3}-[0-9]{4}'
如果有人可以帮助我,如果你能指出我是否朝着正确的方向前进,那就太棒了
我正在寻找这个问题的反面,这里的答案确保数字以0开头,但我正在寻找以下实现的逆转
Javascript Regex - What to use to validate a phone number?
谢谢你, 维杰
答案 0 :(得分:3)
试试这个:
/\([1-9]\d\d\)\s\d{3}-\d{4}/;
或者:
new RegExp('\\([1-9]\\d\\d\\)\\s\\d{3}-\\d{4}');
<强>解释强>
\( : open paren
[1-9] : a digit (not 0)
\d\d : 2 digits (including 0)
\) : close paren
\s : one space
\d{3} : 3 digits (including 0)
- : hyphen
\d{4} : 4 digits (including 0)
答案 1 :(得分:1)
这应该有效。
正则表达式:
[1-9]\d{2}\-\d{3}\-\d{4}
输入:
208-123-4567
099-123-4567
280-123-4567
输出:
208-123-4567
280-123-4567
JavaScript代码:
const regex = /[1-9]\d{2}\-\d{3}\-\d{4}/gm;
const str = `208-123-4567
099-123-4567
280-123-4567`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
&#13;