使用正则表达式,如何检查另一个字符串(子字符串)中字符串(子字符串)的任何部分? 例如: str1 =“ li_xxxyyy” str2 =“ 123xxxyyy”
对于字符串的xxxyyy变量部分,我需要一个真实的响应。
同样,在str2的 any 部分中找到str1的 any 部分
答案 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}`);
});
}
答案 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);