Pap*_*cel 124 javascript regex string icalendar
它可能看起来很明显,但我浪费了太多时间试图让它工作......
我正在尝试使用Javascript Regex从文件中提取子字符串.这是文件中的一个切片:
DATE:20091201T220000
SUMMARY:Dad's birthday
Run Code Online (Sandbox Code Playgroud)
我要提取的字段是摘要,所以我正在尝试编写一个只返回摘要文本的方法.这是方法:
extractSummary : function(iCalContent) {
/*
input : iCal file content
return : Event summary
*/
var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
return(arr);
}
Run Code Online (Sandbox Code Playgroud)
显然,我是一个正则表达式noob :))你能解决它吗?谢谢
j-g*_*tus 92
function extractSummary(iCalContent) {
var rx = /\nSUMMARY:(.*)\n/g;
var arr = rx.exec(iCalContent);
return arr[1];
}
Run Code Online (Sandbox Code Playgroud)
您需要这些更改:
把*
括号内为上述建议.否则,您的匹配组将只包含一个字符.
摆脱^
和$
.使用全局选项,它们在完整字符串的开头和结尾匹配,而不是在行的开头和结尾.匹配显式换行符.
我想你想要匹配的组(括号内的内容)而不是完整的数组?arr[0]
是完全匹配("\nSUMMARY:..."
),下一个索引包含组匹配.
String.match(regexp)应该返回一个带匹配的数组.在我的浏览器中它没有(Mac上的Safari只返回完整匹配,而不是组),但Regexp.exec(字符串)有效.
Sal*_*n A 85
你需要使用m
标志:
多; 将开始和结束字符(^和$)视为多行(即匹配每行的开头或结尾(由\n或\ r分隔),而不仅仅是整个输入字符串的开头或结尾)
也放在*
正确的地方:
"DATE:20091201T220000\r\nSUMMARY:Dad's birthday".match(/^SUMMARY\:(.*)$/gm);
//------------------------------------------------------------------^ ^
//-----------------------------------------------------------------------|
Run Code Online (Sandbox Code Playgroud)
bar*_*ley 18
你的正则表达式最有可能成为
/\nSUMMARY:(.*)$/g
Run Code Online (Sandbox Code Playgroud)
我喜欢使用的一个有用的小技巧是默认分配匹配数组.
var arr = iCalContent.match(/\nSUMMARY:(.*)$/g) || [""]; //could also use null for empty value
return arr[0];
Run Code Online (Sandbox Code Playgroud)
这样,当您使用时,您不会遇到恼人的类型错误 arr
小智 10
这段代码的工作原理:
let str = "governance[string_i_want]";
let res = str.match(/[^governance\[](.*)[^\]]/g);
console.log(res);
Run Code Online (Sandbox Code Playgroud)
res 将等于“string_i_want”。但是,在此示例中,res 仍然是一个数组,因此不要将 res 视为字符串。
通过使用 [^string] 对我不需要的字符进行分组,并匹配括号之间的内容,代码提取了我想要的字符串!
您可以在这里尝试一下:https://www.w3schools.com/jsref/tryit.asp? filename=tryjsref_match_regexp
祝你好运。
你应该使用这个:
var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
return(arr[0]);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
197119 次 |
最近记录: |