Javascript 检查字符串是否包含另一个字符串的3个字符长的子字符串
我需要一个正则表达式模式来检查字符串中的字符是否连续重复另一个字符串中的3个字符。例如:Javascript 检查字符串是否包含另一个字符串的3个字符长的子字符串,javascript,regex,string,Javascript,Regex,String,我需要一个正则表达式模式来检查字符串中的字符是否连续重复另一个字符串中的3个字符。例如: var string1 = "HelloWorld"; var string2 = "Work"; 这里,string1中的字母“Wor”在string2中重复,因此它应该返回true 有关此代码的任何帮助,请访问: 函数findOverlap(a,b){ 如果(b.length==0){ 返回“”; } 如果(a.endsWith(b)){ 返回b; } 如果(a.indexOf(b)>=0){
var string1 = "HelloWorld";
var string2 = "Work";
这里,string1中的字母“Wor”在string2中重复,因此它应该返回true
有关此代码的任何帮助,请访问:
函数findOverlap(a,b){
如果(b.length==0){
返回“”;
}
如果(a.endsWith(b)){
返回b;
}
如果(a.indexOf(b)>=0){
返回b;
}
返回findverlap(a,b.子字符串(0,b.长度-1));
}
一些测试用例:
findOverlap(“12345”、“aaa”)/“
FindVerlap(“12345”、“12”)/“12”
FindVerlap(“12345”、“345”)/“345”
FindVerlap(“12345”、“3456”)/“345”
FindVerlap(“12345”、“111”)/“1”
要解决您的特定问题,您可以:
const haveOverlap=(string1,string2)=>findOverlap(string1,string2)。长度>=3;
console.log(haveOverlap('HelloWorld','Work');//真的
另一个想法是将两个字符串连接起来,将它们小写,然后应用此正则表达式:
(\w{3}).+(\1)
功能重复(s1、s2){
常数s=s1.toLowerCase()+s2.toLowerCase()
常数r=/(\w{3})。+(\1)/
const res=r.exec(s)
返回res!==null?res[1]:“”;
}
日志(重复(“HelloWorld”、“Work”);
日志(重复(“HelloWo”,“Work”))代码>使用拆分
,子字符串
和包含
var fn = function( string1, string2, matchChars ) {
return !!string2.split("").find( function(item, index){
if (index + matchChars <= string2.length )
{
return string1.includes( string2.substring( index, index + matchChars ) ); //check after each turn if the substring from index is included in string1 or not
}
return false;
});
}
console.log( fn("HelloWorld", "Work", 3) );
var fn=函数(字符串1、字符串2、匹配字符){
return!!string2.split(“”)。find(函数(项,索引){
if(index+matchChars比这里的其他答案稍长,这一点也不聪明。将简单地遍历并查找所有匹配项,这将返回一个数组,当较长的字符串包含一个拆分字符串时,将遍历该数组并返回true
函数GetAllConcertives(字符串、数字){
设matches=[],
regex=“”;
for(设i=0;i<(string.length-number);i++){
regex=newregexp(`\\w{${i}}(\\w{${number}})`);
matches.push(string.match(regex)[1])
}
复赛
}
函数是连续的(string1、string2、number){
设short=string1.length console.log(连续(string1、string2、3))
当然应该是length>=3
而不是length>3
。修复了我的代码示例。也许这可以让您了解HelloWorld
-xWor
的预期输出是什么?正确还是错误?@SalmanABoolean@paka我在问string2中间的匹配是否也算作匹配?HelloWorld-xWor
不匹配x
,但Wor
匹配,3个字符。@SalmanA是的,应该考虑它。它应该只检查两个字符串之间是否有任何3个字符的匹配。我认为对于条件控制台.log(重复(“hellowhello”,“Work”));@paka在这种情况下,您需要消除输入字符串中的重复。@paka检查更新后的答案,建议消除输入字符串中的重复。