Как найти имя из строки, используя Regex в NodeJs - PullRequest
0 голосов
/ 19 апреля 2019

Вот мой код, я написал отдельную функцию для регулярного выражения для извлечения шаблона имени, передавая шаблон регулярного выражения с двумя строками в функцию, функция сопоставляет либо один шаблон из двух входных строк, либо вернет 'No_Value'.

 function getName(narration_1, narration_2, regex) {
try {
    // regex = JSON.parse(regex);
    regex = regex.find((item) => { console.log("Item", item); return (new RegExp(item, 'ig').test(narration_1) === true || new RegExp(item, 'ig').test(narration_2) === true)});
    console.log("Regex", regex);
    let narration = (!!regex) ? (new RegExp(regex, 'ig').test(narration_1) ? narration_1 : narration_2) : null;
    let name = (!!narration && narration.match(regex)) ? (!narration.match(regex)[1] ? 'NO_VALUE' : narration.match(regex)[1].trim()) : 'NO_VALUE';
    console.log(name);
    return name;
} catch(e) {
    console.log("Err", e);
    // throw new Error(e);

}
 }

let string1 ="OPERATION"
let string2 = "退回自動轉賬 WRITE SOMEOPERATIONS TO MR . MANOJ-THOMAS"
let regex =  ["MR (.*?) (?:[a-zA-Z]+[0-9]|[0-9]+[a-zA-Z])"];
getName(string1, string2, regex);

Я хочу извлечь имя из приведенной выше строки 2 MANOJ-THOMAS, однако имя, которое появляется, может также соответствовать «Mr.», «MR.», MR. »,« MR. ».

1 Ответ

0 голосов
/ 19 апреля 2019

Я думаю, вы можете сделать это следующим образом:

function getName(narration_1, narration_2, regex) {
    let name = 'NO_VALUE';
    let narration = narration_1.match(regex) || narration_2.match(regex);
    if (narration) { // if any match was found in either narration_1 or _2
        name = narration[1]; // match method filled this array
        console.log("name found: " + name);
    }
    return name;
}

let regex = new RegExp(".*mr\\s?\\.\\s?(.+)", "i");
let narration_1 = "退回自動轉賬 WRITE SOMEOPERATIONS TO MR . MANOJ-THOMAS";
let narration_2 = "OPERATION";

getName(narration_1, narration_2, regex);

Обратите внимание, что это предполагает, что имя всегда равно в конце строки . Если это не так, вам придется расширить регулярное выражение, чтобы исключить все, что будет после.

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