3 回答
TA贡献1828条经验 获得超13个赞
如果它不必是正则表达式:
var str2 = str2.split(",")[1].trim();
或者
var str2 = str2.split(", ")[1];
TA贡献1773条经验 获得超3个赞
您的正则表达式与您需要的不匹配,因为
(?<= )
匹配空格后的位置,然后([^,]+)
将逗号以外的任何一个或多个字符捕获到第 1 组中。
在类似 的字符串SomeCodeHere Los Angeles City, California, USA
中,匹配出现在第一个空格之后并上升到第一个逗号,即Los Angeles City
.
似乎您可以使用非正则表达式解决方案,例如user984003 建议,但如果您的SomeCodeHere
orSomeAddressHere
或或SecondAddressHere
也可能包含逗号,您可以考虑获取最后两个逗号之间的值:
/[^\s,][^,]*(?=,[^,]*$)/
请参阅正则表达式演示。
细节
[^\s,]
- 除空格和逗号以外的字符[^,]*
- 除逗号外的 0+ 个字符(?=,[^,]*$)
- 一个正向前瞻,需要一个逗号,然后是除逗号 ([^,]*
) 之外的 0+ 个字符,直到字符串 ($
) 的末尾。
JS 演示:
var str2 = "SomeCodeHere Los Angeles City, California, USA";
var match = str2.match(/[^\s,][^,]*(?=,[^,]*$)/);
if (match) console.log(match[0]);
TA贡献1784条经验 获得超7个赞
你可以试试这个。
这与你的有点不同,我同时使用了向前看和向后看
var str2 = "SomeCodeHere Los Angeles City, California, USA";
var str2 = str2.match(/(?<=, ).+(?=,)/)[0]
console.log(str2) // California
添加回答
举报