簡體   English   中英

匹配多行正則表達式Javascript

[英]Match Multiple Line Regex Javascript

在整個夜晚的大部分時間里,我都把頭撞在牆上,所以我期待Stackoverflow眾神對此提供幫助。 我有一個試圖解析為數組的文本字符串。 請參閱以下示例:

Name: John Doe
Address: 123 W Main Street
City: Denver


Name: Julie Smith
Address: 1313 Mockingbird Lane
City: Burbank

我想要得到的是一個看起來像這樣的數組:

[Name: John Doe Address: 123 W Main Street City: Denver, Name: Julie Smith Address 1313 Mockingbird Lane City: Burbank]

我從以下正則表達式開始,它在正則表達式中工作正常:

(Name.+)(\n.*){2}

但是,當我嘗試在程序甚至jsfiddle中使用它時,會返回null:

http://jsfiddle.net/auqHA/1/

有什么想法嗎?

您可能想將JavaScript的 String.prototype.match
/(?:Name.+)(?:\\n.*){2}/g 非捕獲組是這樣,因此您不會將結果加倍。

var s = '\
Name: John Doe\n\
Address: 123 W Main Street\n\
City: Denver\n\
\n\
\n\
Name: Julie Smith\n\
Address: 1313 Mockingbird Lane\n\
City: Burbank\
';

var arr = s.match(/(?:Name.+)(?:\n.*){2}/g);
/* gives
["Name: John Doe\n\
Address: 123 W Main Street\n\
City: Denver", "Name: Julie Smith\n\
Address: 1313 Mockingbird Lane\n\
City: Burbank"]
*/
// so if you want no new lines,
arr.map(function (e) {return e.replace(/\n/g, ' ');});

編輯只是看着您的小提琴,它不起作用的原因是因為您忘記添加新行。

s = 'a\
b'; // s === "ab"

s = 'a\n\
b'; // s === "a\nb"

我不是JS專家,但是經過一些工作后,我可以提供以下腳本:

var rawdata='\
\
\
Name: John Doe\
Address: 123 W Main Street\
City: Denver\
\
\
Name: Julie Smith\
Address: 1313 Mockingbird Lane\
City: Burbank';

var looppattern = /Name: /g;
var loopnum = rawdata.match(looppattern);

var pattern = /\s{2}([\w\:\s]+)/;
var nummessages = rawdata.replace(new RegExp("Name:", 'g'),"{Name:").split("{");

alert(nummessages[1]);
alert(nummessages[2]);

這似乎在JSFiddle中工作。 在這里,我認為'{'不在您可以更改此定界符的字符串之間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM