怎么用正则捕获关键字前后10位 比如字符串 :aaaaa1234567890啊啊一二三四五六七八九十bbbb1234567890啊啊一二三四五六七啊啊一二三四
关键字:啊啊
我要匹配出
1234567890啊啊一二三四五六七八九十.....1234567890啊啊一二三四五六七啊啊一二三四

解决方案 »

  1.   

    var keyword = "啊啊"
    var str = "aaaaa1234567890啊啊一二三四五六七八九十bbbb1234567890啊啊一二三四五六七啊啊一二三四";
    var regex = "((?!"+keyword+").){0,10}"+keyword+"((?!"+keyword+").){0,10}";
    var oRegex = new RegExp(regex,"gi");
    var result = str.match(oRegex).join("");
    alert(result)
      

  2.   

    厉害能解释下((?!"+keyword+").) 
      

  3.   

    ((?!"+keyword+").) 
    红色的其实代表一个位置,也就是这个位置的后面不能出现"啊啊"这两个字,出现就放弃继续匹配
    如果不出现就用 "."匹配一个任意字符
      

  4.   

    (?!"+keyword+") 匹配后边跟的不是 keyword的位置 
      

  5.   

    var str="aaaaa1234567890啊啊一二三四五六七八九十bbbb1234567890啊啊一二三四五六七啊啊一二三四";
    var arr = str.split("啊啊");
    var i = 0
    if(arr[i].substring(arr[i].length-10,arr[i].length) != "")
    alert(arr[i].substring(arr[i].length-10,arr[i].length));
    for(i = 1; i < arr.length; i++){
    if(arr[i].substring(0,10) !="")
    alert(arr[i].substring(0,10));
    if(arr[i].substring(arr[1].length-10,arr[1].length) != "")
    alert(arr[i].substring(arr[1].length-10,arr[1].length));
    }