У меня есть регулярное выражение 3 для обнаружения телефонов в большом тексте, которое затем заменяется на «(телефон)» по соображениям конфиденциальности.
var phoneNumber = /\(?(?:[0-9]{2,4})\)?[- . ]{0,}?(?:[0-9]{2,4})[- . ]{0,}?(?:[0-9]{2,4})/gim;
var separatePhone = /(\d\s){8,}\d/gim;
var textPhone = /((one|two|three|four|five|six|seven|eight|nine|zero|\d)\s){8,}(one|two|three|four|five|six|seven|eight|nine|zero|\d)/gim;
Затем я проверяю, совпадает ли мой текст с каждым.
Примеры:
I need 100000€ call me at 123456789 to talk about it.
Hi, can you buy this item (link) for $500.000? call me on +01123456789
Hi, can you buy this item (link) for £100000000? call me at 100000000
Проблема в этом тексте заключается в 100000€
определяется как телефон.
Я хочу сопоставить телефоны, но не числа с €, $ или £ ($ и £ в начале числа), у меня уже есть (?![\€\$\£]\(?(?:[0-9]{2,4}))
, также я ужепопробуйте:
(?![\€\$\£]\(?(?:[0-9]{2,4}))(?=\(?(?:[0-9]{2,4})\)?[- . ]{0,}?(?:[0-9]{2,4})[- . ]{0,}?(?:[0-9]{2,4}))
Но это не работает.
Я проверяю это регулярное выражение в https://regex101.com/r/PJbIm9/14
Обновление:
Я собираюсь использовать это выражение (оригинальное в проекте), пока решение помечено, я проверяю регулярное выражение как массив.
/[^$€£0-9]((?:[0-9]{2,4})\)?[- . ]{0,}?(?:[0-9]{2,4})[- . ]{0,}?(?:[0-9]{2,4})+)/gim;