2016-10-09 38 views
0

I持って改行して、次の文字列\ rを\ n個:jQuery文字列を抽出する正規表現ですか?

var myString = "DTSTART:20161009T160000Z 
       DTEND:20161009T170000Z 
       RRULE:FREQ=DAILY;UNTIL=20161015T000000Z;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA 
       EXDATE:20161009T160000Z" 

次のように私はRRULEを抽出したい:

FREQ=DAILY;UNTIL=20161015T000000Z;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA 

は現在、私は次のよう

をすることによってこれを達成することができます
var subStr = myString.match("RRULE:(.*)\r\n"); 
alert(subStr[1]); 

EXDATE行が存在しない場合は、RRULE行の後に\ r \ nがないことがあります。配列インデックスを使用しないで出力する必要がない、よりクリーンな方法を知っている人は誰ですか?

+3

ただ、 '/ RRULE :(:より良い精度のために、あなたはデモを参照してください

/^\s*RRULE:(.*)/m 

と行の先頭にあるRRULEを望む指定することもできます。 * /) ''/'で十分であるか、これはもっと正確に見える - '/^ \ s * RRULE:(。*)/ m' –

答えて

1

あなたは.マッチ任意のシンボルが、改行記号(\r、また\nでもない)ので、全く\r\nを必要としません。単なる/RRULE:(.*)/があなたのために働くことができます。

const myString = `DTSTART:20161009T160000Z 
 
       DTEND:20161009T170000Z 
 
       RRULE:FREQ=DAILY;UNTIL=20161015T000000Z;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA`; 
 
let m; 
 
m = myString.match(/^\s*RRULE:(.*)/m); 
 
if (m) { 
 
console.log(m[1]); 
 
}

+0

'm'は式の最後に何をするのでしょうか? – adam78

+0

これは '^ 'を文字列の先頭ではなく行頭にマッチさせる複数行の修飾子です。 –