字串模糊匹配 JavaScript版

本文介绍了如何使用JavaScript进行字串的模糊匹配,强调子串必须从头开始完整匹配,并解释了子串中'?'字符的含义,以及返回匹配情况的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字串模糊匹配

  • 从字符串string开始完整匹配子串sub,返回匹配到的字符个数。

  • sub中如果出现’?‘表示可以匹配一到三个除’\0’以外的任意字符。
    如果sub还有找不到匹配的字符,则说明不能完整匹配。

  • 如果能完整匹配,返回匹配到的字符个数,如果有多种匹配方式,返回匹配字符数最少的那个,如果不能完整匹配,返回-1

输入

abcdefg
a?c

输出

3

本题的坑在于,子串必须从头匹配

var readline=require('readline');
const r1=readline.createInterface({
    input:process.stdin,
    output:process.stdout
})
var str1='';
var str2='';

var time=0;
r1.on('line',function(line){
    //console.log(time)
    if(time==0){
        str1+=line;
        time++;
    }else{
        str2+=line;
        var c=str2.split('');
        for(var i=0;i<c.length;i++){
            if(c[i]=='?'){
            c[i]='(.){1,3}';
            }
        }
        str2=c.join('');
        //正则表示不区分大小写(i)的从头(^)匹配
        var reg = new RegExp("^"+str2+"","i")
        var d =[];
        //d中存储匹配的结果,exec匹配结果为满足条件的所有元素的数组集合
        d = reg.exec(str1);
        //test可以返回该父串中是否包含子串
        if(reg.test(str1)){
            console.log(d[0].length)
        }else{
            console.log(-1)
            //console.log(111)
        }
    }
    
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值