2015-03-24 7 views
0

Я хочу сравнить две строки, используя регулярное выражение в javascript.Javascript regex для сравнения двух строк

Ниже приводится requiremet -

String1 = 'xyz.east.abc.com'

String2 =

String3 = «pqr.west 'хуг * abc.com..'. efg.com»

String4 =„PQR. *. efg.com“

Я хочу, чтобы регулярное выражение, с помощью которой я должен быть в состоянии сравнить выше строк и вывод должен быть string1 & String2 такие же и String3 & String4 такие же.

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

+0

[RegExp] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp) – zerkms

+0

ли звездочка (*) символ здесь символ или дикая природа? –

ответ

1

Вы можете выполнить крошечную функцию, которая сделает это за вас:

function escapeRegExp(str) { 
    return str.replace(/[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g, "\\$&"); 
} 

function fuzzyComparison(str, mask) { 
    var regex = '^' + escapeRegExp(mask).replace(/\*/, '.*') + '$'; 
    var r = new RegExp(regex); 

    return r.test(str); 
} 

Итак, что вы здесь делаете, избегайте всех метасимволов регулярных выражений, но *, которые вы в свою очередь замените на .*, что означает «любое количество символов».

Затем вы проверяете созданное регулярное выражение на строку, с которой вы сравниваете.

Это решение лучше (для задачи, как вы объяснили), чем с использованием регулярных выражений, поскольку вам не нужно жестко задавать все целевые регулярные выражения и может это сделать во время выполнения.

JSFiddle: http://jsfiddle.net/60b78b8o/

+0

Спасибо zerkms. Это точное решение, которое я искал и спасибо за объяснение логики. –

0
^xyz\.[^.]*\.abc\.com$ 

Вы можете использовать это для string 1 и string 2 .Кнопкой abc к efg, чтобы соответствовать string 3 и string 4 .Увидь демо.

https://regex101.com/r/tJ2mW5/19

0

Вы можете использовать /xyz.[a-z]*.abc.com/, чтобы соответствовать любой строке, которые начинаются хуг., То есть сочетание аз charectors, затем заканчивает .abc.com

var x = /xyz.[a-z]*.abc.com/.test("xyz.etetjh.abc.com"); 
//or 
var x = /xyz.[a-z]*.abc.com/.test("xyz.east.abc.com"); 

console.log(x); // will output true. 

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