使用正则表达式在另一个子字符串中查找子字符串

时间:2019-05-31 17:02:22

标签: javascript regex

使用正则表达式,如何检查另一个字符串(子字符串)中字符串(子字符串)的任何部分? 例如: str1 =“ li_xxxyyy” str2 =“ 123xxxyyy”

对于字符串的xxxyyy变量部分,我需要一个真实的响应。

同样,在str2的 any 部分中找到str1的 any 部分

3 个答案:

答案 0 :(得分:1)

我猜测在这里,我们只想在所需的输出周围使用一个捕获组,这很可能会解决我们的问题,只需使用一个简单的表达式,例如:

const regex = /(xxxyyy)/gm;
const str = `li_xxxyyy
123xxxyyy
123xxxyyy123xxxyyy
123xxxyyy123`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

Demo

答案 1 :(得分:1)

  

同样,在str2的任何部分都可以找到str1的任何部分

您不需要regex tbh,仅使用常规字符串操作会更简单,更快捷:

let shareCommonSubstring = (str1, str2) => [...str2].some(c2 => str1.includes(c2));

let test = (str1, str2) => console.log(str1, str2, shareCommonSubstring(str1, str2));
test('xyz', 'abc'); // false
test('xyz', 'abcx'); // true
test('axyz', 'abc'); // true

但是如果您坚持使用正则表达式:

let shareCommonSubstring = (str1, str2) => !!str1.match(new RegExp(`[${str2}]`));

let test = (str1, str2) => console.log(str1, str2, shareCommonSubstring(str1, str2));
test('xyz', 'abc'); // false
test('xyz', 'abcx'); // true
test('axyz', 'abc'); // true

答案 2 :(得分:0)

您可以像这样检查:

var subString = 'Hello';
var string = 'Hello World'
var isSubstring = new RegExp(subString).test(string);