Сравнение двух строк с регулярными выражениями в JavaScript - PullRequest
0 голосов
/ 08 апреля 2020

Я довольно плохо знаком с регулярными выражениями и пытаюсь сравнить две строки вместе, используя регулярное выражение в качестве заполнителя / подстановочного знака для определенных значений, которые могут измениться в строке, которая меня не касается. Однако, если я реализую следующий код:

var regex = /my .* is/;    

var str1 = "Hello, my name is... not important.";
var str2 = "Hello, " + regex + "... not important.";


var result = str1 === str2;

console.log(str1);
console.log(str2);
console.log(result);

Я бы ожидал, что возврат будет:

"Hello, my name is... not important."
"Hello, my name is... not important."
true

Вместо этого я получу это:

"Hello, my name is... not important."
"Hello, /my .* is/... not important."
false

Может Кто-нибудь объяснит мне, что происходит и как я могу это исправить?

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

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

Вместо этого вы хотите regex.test(string) (string.match(regex) также будет работать, но не так семантически точно).

let regex1 = /my .* is/;
let regex2 = /^Hello, my .* is... not important\.$/;

let str = "Hello, my name is... not important.";

console.log(str);
console.log(regex1);
console.log(regex2);
console.log(regex1.test(str));
console.log(regex2.test(str));

regex1 будет проверять фразу my _blank_ is, в то время как regex2 будет проверять точное соответствие mtaching Hello... important.

0 голосов
/ 08 апреля 2020

При объединении любой переменной со строкой в ​​javascript, javascript приведёт все к строке и объединит. Например,

var a = 5;
var str = "The value of a is " + a;
console.log(str)

напечатает "The value of a is 5"

Это приводит к тому, что значение str2 будет "Hello, /my .* is/... not important."

Посмотрите на этот ответ для сравнения двух строк с подстановочными знаками.

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