Как добиться следующего результата с помощью регулярных выражений? - PullRequest
0 голосов
/ 02 февраля 2019

Я хочу извлечь телефонные номера следующим образом со следующим регулярным выражением:

/(?:(\+?\d{1,3}) )?(?:([\(]?\d+[\)]?)[ -])?(\d{1,5}[\- ]?\d{1,5})/

, используя эти тестовые примеры:

"my number is 2435 6546 56756765" 
"my complete number is 55 40 60 5585"

Я получил:

2435 654656756

Однако мне нужны следующие цифры:

2435654656756765
5540605585

Так что я хотел бы оценить поддержку.

Ответы [ 5 ]

0 голосов
/ 02 февраля 2019
const str = "my number is 2435 6546 56756765"; 
const num = str.replace(/[\D\s]*/g, ""); console.log(num);

Он заменит нецифровые буквы и пробелы.

0 голосов
/ 02 февраля 2019

Структура данного регулярного выражения, кажется, не вписывается в приведенные примеры.Цифры разделены пробелом, содержат как минимум 2 цифры и повторяются 2-3 раза.

Что вы можете сделать, это сопоставить этот шаблон и удалить пробельные символы после.

const regex = /\d{2,}(?: \d{2,}){2,3}/g;

[
    "my number is 2435 6546 56756765",
    "my complete number is 55 40 60 5585"
].forEach(s => console.log(s.match(regex)[0].replace(/\s+/g, '')))
0 голосов
/ 02 февраля 2019

Вы также можете напрямую заменить все не цифры

 const str = "my number is 2435 6546 56756765";
 const num = str.replace(/\D/g, "");
 console.log(num);
0 голосов
/ 02 февраля 2019

Много способов сделать это.Вот цикл старой школы - и другое, менее эффективно написанное выражение.

var strs =["my number is 2435 6546 56756765",
"my complete number is 55 40 60 5585"]

for(let i = 0; i < strs.length; i++){
   console.log(strs[i].replace(/([a-z]{1,})?(\s)/g, ""))
}
0 голосов
/ 02 февраля 2019

Поскольку вы используете пробелы в регулярном выражении, вы должны удалить их, когда получите результат с str.replace(/\s/g, '');.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...