Tôi đang cố gắng trích xuất một chuỗi con từ một tệp với JavaScript Regex. Đây là một lát từ tệp:
DATE:20091201T220000
SUMMARY:Dad's birthday
Trường tôi muốn trích xuất là "Tóm tắt". Đây là cách tiếp cận:
extractSummary : function[iCalContent] {
/*
input : iCal file content
return : Event summary
*/
var arr = iCalContent.match[/^SUMMARY\:[.]*$/g];
return[arr];
}
Piper
1.2562 huy hiệu vàng15 Huy hiệu bạc25 Huy hiệu đồng2 gold badges15 silver badges25 bronze badges
Hỏi ngày 10 tháng 11 năm 2009 lúc 11:30Nov 10, 2009 at 11:30
PapelpincelpapelpincelPapelPincel
4.0856 Huy hiệu vàng38 Huy hiệu bạc48 Huy hiệu đồng6 gold badges38 silver badges48 bronze badges
function extractSummary[iCalContent] {
var rx = /\nSUMMARY:[.*]\n/g;
var arr = rx.exec[iCalContent];
return arr[1];
}
Bạn cần những thay đổi này:
Đặt
*
bên trong dấu ngoặc đơn như đề xuất ở trên. Nếu không, nhóm phù hợp của bạn sẽ chỉ chứa một ký tự.Loại bỏ
0 vàextractSummary : function[iCalContent] { /* input : iCal file content return : Event summary */ var arr = iCalContent.match[/^SUMMARY\:[.]*$/g]; return[arr]; }
1. Với tùy chọn toàn cầu, chúng phù hợp khi bắt đầu và kết thúc chuỗi đầy đủ, thay vì bắt đầu và kết thúc các dòng. Phù hợp trên Newlines rõ ràng thay thế.extractSummary : function[iCalContent] { /* input : iCal file content return : Event summary */ var arr = iCalContent.match[/^SUMMARY\:[.]*$/g]; return[arr]; }
Tôi cho rằng bạn muốn nhóm phù hợp [có gì bên trong dấu ngoặc đơn] chứ không phải là mảng đầy đủ?
2 là phù hợp đầy đủ [extractSummary : function[iCalContent] { /* input : iCal file content return : Event summary */ var arr = iCalContent.match[/^SUMMARY\:[.]*$/g]; return[arr]; }
3] và các chỉ mục tiếp theo chứa các khớp của nhóm.extractSummary : function[iCalContent] { /* input : iCal file content return : Event summary */ var arr = iCalContent.match[/^SUMMARY\:[.]*$/g]; return[arr]; }
String.Match [RegEXP] được cho là sẽ trả về một mảng với các trận đấu. Trong trình duyệt của tôi, nó không [Safari trên Mac chỉ trả về toàn bộ, không phải các nhóm], mà là regexp.exec [chuỗi] hoạt động.
Đã trả lời ngày 10 tháng 11 năm 2009 lúc 12:34Nov 10, 2009 at 12:34
j-g-faustusj-g-faustusj-g-faustus
8,5934 Huy hiệu vàng31 Huy hiệu bạc42 Huy hiệu đồng4 gold badges31 silver badges42 bronze badges
1
Bạn cần sử dụng cờ
extractSummary : function[iCalContent] {
/*
input : iCal file content
return : Event summary
*/
var arr = iCalContent.match[/^SUMMARY\:[.]*$/g];
return[arr];
}
4:đa dòng; Xử lý các ký tự bắt đầu và kết thúc [^ và $] là hoạt động trên nhiều dòng [nghĩa là, khớp với đầu hoặc cuối của mỗi dòng [được phân định bởi \ n hoặc \ r], không chỉ là đầu hoặc đầu của toàn bộ chuỗi đầu vào]
Cũng đặt *
vào đúng nơi:
"DATE:20091201T220000\r\nSUMMARY:Dad's birthday".match[/^SUMMARY\:[.*]$/gm];
//------------------------------------------------------------------^ ^
//-----------------------------------------------------------------------|
Đã trả lời ngày 10 tháng 11 năm 2009 lúc 13:18Nov 10, 2009 at 13:18
Salman Asalman aSalman A
253K80 Huy hiệu vàng424 Huy hiệu bạc513 Huy hiệu Đồng80 gold badges424 silver badges513 bronze badges
Biểu hiện thường xuyên của bạn rất có thể muốn
/\nSUMMARY:[.*]$/g
Một thủ thuật nhỏ hữu ích mà tôi muốn sử dụng là mặc định gán cho khớp với một mảng.
var arr = iCalContent.match[/\nSUMMARY:[.*]$/g] || [""]; //could also use null for empty value
return arr[0];
Bằng cách này, bạn không gặp lỗi loại khó chịu khi bạn sử dụng
extractSummary : function[iCalContent] {
/*
input : iCal file content
return : Event summary
*/
var arr = iCalContent.match[/^SUMMARY\:[.]*$/g];
return[arr];
}
6Đã trả lời ngày 10 tháng 11 năm 2009 lúc 12:36Nov 10, 2009 at 12:36
2
extractSummary : function[iCalContent] {
/*
input : iCal file content
return : Event summary
*/
var arr = iCalContent.match[/^SUMMARY\:[.]*$/g];
return[arr];
}
7 thay vì extractSummary : function[iCalContent] {
/*
input : iCal file content
return : Event summary
*/
var arr = iCalContent.match[/^SUMMARY\:[.]*$/g];
return[arr];
}
8 sẽ là một khởi đầu. Cái sau sẽ chỉ bắt được ký tự cuối cùng trên dòng.Ngoài ra, không cần phải thoát khỏi
extractSummary : function[iCalContent] {
/*
input : iCal file content
return : Event summary
*/
var arr = iCalContent.match[/^SUMMARY\:[.]*$/g];
return[arr];
}
9.Đã trả lời ngày 10 tháng 11 năm 2009 lúc 11:32Nov 10, 2009 at 11:32
Tim Pietzckertim PietzckerTim Pietzcker
Phù bằng vàng 319K5757 gold badges494 silver badges550 bronze badges
Mã này hoạt động:
let str = "governance[string_i_want]";
let res = str.match[/[^governance\[][.*][^\]]/g];
console.log[res];
Res sẽ bằng "String_i_want". Tuy nhiên, trong ví dụ này, Res vẫn là một mảng, vì vậy không đối xử với Res như một chuỗi.
Bằng cách nhóm các ký tự tôi không muốn, sử dụng [^chuỗi] và khớp với những gì giữa các dấu ngoặc, mã trích xuất chuỗi tôi muốn!
Bạn có thể dùng thử ở đây: //www.w3schools.com/jsref/tryit.asp?filename=trejsref_match_regexp
Chúc may mắn.
CCPIZZA
26.7K15 Huy hiệu vàng157 Huy hiệu bạc151 Huy hiệu đồng15 gold badges157 silver badges151 bronze badges
Đã trả lời ngày 2 tháng 12 năm 2020 lúc 12:52Dec 2, 2020 at 12:52
guidamediaguidamediaguidamedia
1091 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 bronze badges
Bạn nên sử dụng điều này:
var arr = iCalContent.match[/^SUMMARY\:[.]*$/g];
return[arr[0]];
Đã trả lời ngày 17 tháng 5 năm 2021 lúc 20:21May 17, 2021 at 20:21
MbistamimbistamiMbistami
3972 Huy hiệu bạc11 Huy hiệu đồng2 silver badges11 bronze badges
Đây là cách bạn có thể phân tích các tệp ical với javascript
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];
Đã trả lời ngày 10 tháng 11 năm 2009 lúc 13:04Nov 10, 2009 at 13:04
user187291user187291user187291
52,8K19 Huy hiệu vàng94 Huy hiệu bạc127 Huy hiệu đồng19 gold badges94 silver badges127 bronze badges