需要的表达式如下形式如下
[cn]中文[/cn][en]英文[/en]
其中cn或者en可以由我自己定义(我可以自定义标签的意思)
传入一个字符串后,我根据该字符串和标签名判断该字符串中是否含有该标签,如果含有则取出该标签中的文字,否则返回错误
var getCharByTagName=function(str,tagName){//str=>字符串,tagName=>标签名如en,cn之类
    var reg=/这里是正则表达式,我不会搞/;
    var _val='';
    if(reg.match(str)/*如果该字符串中含有类似的字符*/){
          //取出该标签中的字符并赋值给 _val;
          _val='';//赋值
        return _val;
        }
   return false;//返回错误
}
大体的意思就是这样了,求高人完善此函数!多谢,多谢!

解决方案 »

  1.   


    var getCharByTagName = function(str, tagName){
      var reg  = /\[([^\]]+)\](.*)\[\\(\1)\]/;
      var result;
      if((result = reg.exec(str)) && result[1] === tagName) {
        return result[2];
      }
      return false;
    }   
    console.log(getCharByTagName('[cn]中文[\\cn]', 'cn'));
    你是这个意思么
      

  2.   

    嗯,基本是这个意思,不过标签是[cn]中文[\cn]
      

  3.   

    function getMatchs(str,tag){
    var reg =eval('/\\['+tag+'\\](.+?)\\[\\/'+tag+'\\]/i');
    return str.match(reg);
    }
    var m = getMatchs('aaaa[cn]中文[/cn]bbbb[en]英文[/en]ccccc','cn');
    alert(m.length +"\r\n" +m[0]+"\r\n"+m[1]);
      

  4.   


    function getResult(str, tagName)
    {
        var regex = "\\["+tagName+"\\]([^\\[]*)\\[/"+ tagName +"\\]";
    var oRegex = new RegExp(regex,'ig');
    var result = [];
    var match;
    while(match = oRegex.exec(str))
    {
        result.push(match[1]);
    }
    return result;
    }function getCharByTagName(str,tagName)
    {
        var result = getResult(str,tagName);
    if(result.length > 0) return result.join(',');
    else return '没有匹配的结果';
    }
    var result = getCharByTagName('[en]中文[/en][en]英文[/en]','en');alert(result)