regex js正则 - 如何使用Javascript正则表达式提取字符串





javascript正则表达式查找 jquery使用正则表达式 (5)


你需要使用m flag

多; 将开始和结束字符(^和$)视为处理多行(即,匹配每行的开头或结尾(由\ n或\ r定界),而不仅仅是整个输入字符串的开头或结尾)

也把*放在正确的地方:

"DATE:20091201T220000\r\nSUMMARY:Dad's birthday".match(/^SUMMARY\:(.*)$/gm);
//------------------------------------------------------------------^    ^
//-----------------------------------------------------------------------|

它可能看起来很明显,但我浪费了太多时间试图让它工作......

我试图从Javascript正则表达式中提取一个子字符串。 这是来自文件的一部分:

DATE:20091201T220000
SUMMARY:Dad's birthday

我想提取的字段是摘要,所以我试图编写一个只返回摘要文本的方法。 这里是方法:

extractSummary : function(iCalContent) {
  /*
  input : iCal file content
  return : Event summary
  */
  var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
  return(arr);
}

显然,我是一个正则表达式noob :))你能解决它吗? 谢谢




(.*)而不是(.)*将是一个开始。 后者只会捕获线上的最后一个字符。

另外,不需要逃避:




你的正则表达式很可能想成为

/\nSUMMARY:(.*)$/g

我喜欢使用的一个有用的小技巧是默认分配与数组匹配。

var arr = iCalContent.match(/\nSUMMARY:(.*)$/g) || [""]; //could also use null for empty value
return arr[0];

这样,当你使用arr时,你不会感到恼人的类型错误




这是你如何使用javascript解析iCal文件

    function calParse(str) {

        function parse() {
            var obj = {};
            while(str.length) {
                var p = str.shift().split(":");
                var k = p.shift(), p = p.join();
                switch(k) {
                    case "BEGIN":
                        obj[p] = parse();
                        break;
                    case "END":
                        return obj;
                    default:
                        obj[k] = p;
                }
            }
            return obj;
        }
        str = str.replace(/\n /g, " ").split("\n");
        return parse().VCALENDAR;
    }

    example = 
    'BEGIN:VCALENDAR\n'+
    'VERSION:2.0\n'+
    'PRODID:-//hacksw/handcal//NONSGML v1.0//EN\n'+
    'BEGIN:VEVENT\n'+
    'DTSTART:19970714T170000Z\n'+
    'DTEND:19970715T035959Z\n'+
    'SUMMARY:Bastille Day Party\n'+
    'END:VEVENT\n'+
    'END:VCALENDAR\n'


    cal = calParse(example);
    alert(cal.VEVENT.SUMMARY);







javascript regex icalendar