我想用
regular expression
然后访问括号中的子字符串:
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 (!!!)
我做错了什么?
我发现上面的正则表达式代码没有问题:我测试的实际字符串是:
"date format_%A"
报告“%A”未定义似乎是一种非常奇怪的行为,但它与这个问题没有直接关系,所以我打开了一个新的,
Why is a matched substring returning "undefined" in JavaScript?
.
问题是
console.log
将其参数视为
printf
语句,并且由于我记录的字符串(
"%A"
)有一个特殊的值,它试图找到下一个参数的值。