我想使用正则表达式匹配字符串的一部分,然后访问该带括号的子字符串:
var myString = "something format_abc"; // I want "abc"
var arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString);
console.log(arr); // Prints: [" format_abc", "abc"] .. so far so good.
console.log(arr[1]); // Prints: undefined (???)
console.log(arr[0]); // Prints: format_undefined (!!!)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我发现有什么不对上述正则表达式代码:实际的字符串,我反对是这样的测试:
"date format_%A"
Run Code Online (Sandbox Code Playgroud)
报告"%A"未定义似乎是一种非常奇怪的行为,但它与此问题没有直接关系,所以我开了一个新的,为什么匹配的子字符串在JavaScript中返回"undefined"?.
问题是console.log它的参数就像一个printf语句,因为我正在记录的字符串("%A")有一个特殊的值,它试图找到下一个参数的值.
假设我有一个字符串:"We.need..to...split.asap".我想要做的是用分隔符分割字符串.,但我只想按第一个 分割,.并.在后续标记中包含任何重复的s.
预期产量:
["We", "need", ".to", "..split", "asap"]
Run Code Online (Sandbox Code Playgroud)
在其他语言中,我知道这可以通过后视来实现,/(?<!\.)\./但遗憾的是Javascript不支持这样的功能.
我很想知道你对这个问题的答案.也许有一种巧妙的使用前瞻性目前可以避开我?
我正在考虑反转字符串,然后重新转换令牌,但这似乎对我所追求的东西太多了......加上争议:你如何在JavaScript中反转字符串?
谢谢您的帮助!