Может быть несколько способов проверить эти числа.Одним из способов будет то, что мы напишем все наши возможные номера телефонов, а затем напишем выражение для него.Возможно, аналогично:
[0-9]{2,3}(\s|-)[0-9]{4,5}-?[0-9]{3,4}
Тест
re = /[0-9]{2,3}(\s|-)[0-9]{4,5}-?[0-9]{3,4}/m
str = '\'00 00000000\'
\'000-000000000\'
\'000 00000-0000\'
\'00 0000-0000\''
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
Демо
Этот фрагмент кода просто показывает группы захвата и то, что выражение может быть допустимым:
const regex = /[0-9]{2,3}(\s|-)[0-9]{4,5}-?[0-9]{3,4}/gm;
const str = `'00 00000000'
'000-000000000'
'000 00000-0000'
'00 0000-0000'`;
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}`);
});
}
RegEx
Если это выражение нежелательно, его можно изменить или изменить в regex101.com .
RegEx Circuit
jex.im также помогает визуализировать выражения.
Редактировать 1:
В случае ()
мы хотим добавить два отрицательных взгляда позади нашего начальноговыражение.Может быть, похоже на это :
\(?[0-9]{2,3}\)?(\s|-)[0-9]{4,5}-?[0-9]{3,4}